我想制作一个ImageView?当我触摸它时会改变背景,当我将手指拖远时,它变得正常我不知道该怎么做,谢谢
imgButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
cmp++;
txt2.setText(" " + cmp);
//Quant on touche l'image :
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
imgButton.getDrawable().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP);
}
// si Je bouge le dois sur l'image et ....
if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
//... et que le doit quitte l'image
if (event.getX() < 0 || event.getX() > v.getWidth() || event.getY() < 0 || event.getY() > v.getHeight()) {
imgButton.getDrawable().setColorFilter(0x00000001, PorterDuff.Mode.SRC_ATOP);
}
if (event.getX() > 0 && event.getX() < v.getWidth() && event.getY() > 0 && event.getY() < v.getHeight()) {
// ... et que le doit revient vers L'image
imgButton.getDrawable().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP);
}
}
// Si je lève le doits et...
if (event.getActionMasked() == MotionEvent.ACTION_UP) {
// .... sur l'image :
if (event.getX() > 0 && event.getX() < v.getWidth() && event.getY() > 0 && event.getY() < v.getHeight()) {
//Finger back to the view
imgButton.getDrawable().setColorFilter(0x00000001, PorterDuff.Mode.SRC_ATOP);
Intent i = new Intent(MainActivity.this, game.class);
startActivity(i);
}
}
return true;
}
});
答案 0 :(得分:0)
在您的应用程序名为change.xml
的可绘制文件夹下创建一个xml文件,并将其放在代码下面。用您的颜色代码修改它。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true">
<color android:color="#00FF00"/>
</item>
<item android:state_pressed="false">
<color android:color="#00FFFF"/>
</item>
</selector>
并将以下属性添加到布局的ImageView
android:background="@drawable/change"
答案 1 :(得分:0)
您应该使用 getActionMasked()而不是 getAction()。
getAction()返回带有指针信息的操作,而 getActionMasked()仅返回简单操作,这使得操作比较正常工作。
然后在 onTouch 方法中捕获正确的操作。
exe
在大多数情况下,返回的值应为 true 。请参阅this article。