我的应用程序需要支持从15到19的Android版本,所以对于低于15的版本,我使用的是弃用方法,对于更高版本,我使用的是android提供的最新方法。我的项目设置已显示在下面的屏幕截图中
现在在运行时我将检查android的版本并相应地使用合适的方法。我知道如果一个方法被弃用它仍然可以使用,但我最近遇到了[ BitmapDrawable(位图)]构造函数的问题,在我使用它并且工作正常直到果冻豆但与kikkat一起使用时会产生巨大的问题。所以我不想重复同样的事情。现在,编译器抛出一个错误,指出" Call需要API级别16(当前min为15)" 。我出错的地方请帮帮忙。
我的工作区和代码的屏幕截图
我认为第二张图片无法正确显示,我自己提供了代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btnColor);
btn.setBackgroundColor(Color.parseColor("#FF0000"));
btn.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
((Button) v).setBackgroundColor(Color.parseColor("#87CEFA"));
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: {
Drawable orginal = ((Button) v).getBackground();
int currentApi = Build.VERSION.SDK_INT;
if(currentApi >= 16)
((Button) v).setBackground(orginal);
else
((Button) v).setBackgroundDrawable(orginal);
break;
}
}
return true;
}
});
}
答案 0 :(得分:0)
尝试添加
@TargetApi(16)
@SuppressLint("NewApi")
超过onTouch
方法