完成触摸 ImageView 后
after finishing touching ImageView
我想制作一个 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;
}
});
在您的应用程序名为 change.xml
的可绘制文件夹下创建一个 xml 文件,并将您的颜色代码放在 codes.Modify 下面。
<?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"
您应该使用 getActionMasked() 而不是 getAction()。
getAction() returns 带有指针信息的动作而 getActionMasked() 只有 returns 简单动作,这使得动作比较工作正常。
然后在onTouch方法中捕捉正确的动作。
public boolean onTouch(View v, MotionEvent event) {
if(event.getActionMasked()==MotionEvent.ACTION_DOWN) {
//Finger down
//Change the color
}
if(event.getActionMasked()==MotionEvent.ACTION_MOVE) {
if(event.getX()<0 || event.getX()>v.getWidth() || event.getY()<0 || event.getY()>v.getHeight()){
//Finger exit the view
//Change the color back
}
}
if(event.getActionMasked()==MotionEvent.ACTION_UP) {
//Finger up
//Change the color back
}
return true;
}
大多数情况下返回值应该是true。参见 this article。
我想制作一个 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;
}
});
在您的应用程序名为 change.xml
的可绘制文件夹下创建一个 xml 文件,并将您的颜色代码放在 codes.Modify 下面。
<?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"
您应该使用 getActionMasked() 而不是 getAction()。
getAction() returns 带有指针信息的动作而 getActionMasked() 只有 returns 简单动作,这使得动作比较工作正常。
然后在onTouch方法中捕捉正确的动作。
public boolean onTouch(View v, MotionEvent event) {
if(event.getActionMasked()==MotionEvent.ACTION_DOWN) {
//Finger down
//Change the color
}
if(event.getActionMasked()==MotionEvent.ACTION_MOVE) {
if(event.getX()<0 || event.getX()>v.getWidth() || event.getY()<0 || event.getY()>v.getHeight()){
//Finger exit the view
//Change the color back
}
}
if(event.getActionMasked()==MotionEvent.ACTION_UP) {
//Finger up
//Change the color back
}
return true;
}
大多数情况下返回值应该是true。参见 this article。