Android 触摸完ImageView后
我想做一个图像视图?当我触摸它时,它会改变背景,当我把手指拖到远处时,它会变得正常,我不知道该怎么做,谢谢Android 触摸完ImageView后,android,android-imageview,Android,Android Imageview,我想做一个图像视图?当我触摸它时,它会改变背景,当我把手指拖到远处时,它会变得正常,我不知道该怎么做,谢谢 imgButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { cmp++; txt2.setText(" " + cmp);
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;
}
});
imgButton.setOnTouchListener(新视图.OnTouchListener(){
@凌驾
公共布尔onTouch(视图v,运动事件){
cmp++;
txt2.setText(“+cmp”);
//触摸l'image的数量:
if(event.getActionMasked()==MotionEvent.ACTION\u向下){
imgButton.getDrawable().setColorFilter(0x77000000,PorterDuff.Mode.SRC_);
}
//这是我的照片和照片。。。。
if(event.getActionMasked()==MotionEvent.ACTION\u MOVE){
//…让我放弃我的形象
if(event.getX()<0 | | event.getX()>v.getWidth()| | event.getY()<0 | | event.getY()>v.getHeight()){
imgButton.getDrawable().setColorFilter(0x00000001,PorterDuff.Mode.SRC_);
}
if(event.getX()>0&&event.getX()0&&event.getY()0&&event.getX()0&&event.getY()
在应用程序的名为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>
您应该使用getActionMasked()而不是getAction() getAction()返回带有指针信息的操作,而getActionMasked()只返回简单的操作,这使得操作比较工作正常 然后用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;
}
public boolean onTouch(视图v,运动事件){
if(event.getActionMasked()==MotionEvent.ACTION\u向下){
//指指点点
//换颜色
}
if(event.getActionMasked()==MotionEvent.ACTION\u MOVE){
if(event.getX()v.getWidth()| | event.getY()v.getHeight()){
//手指退出视图
//把颜色改回去
}
}
if(event.getActionMasked()==MotionEvent.ACTION\u UP){
//竖起手指
//把颜色改回去
}
返回true;
}
在大多数情况下,返回值应为true。请参阅。不清楚。你为什么不使用普通的点击监听器呢?这就是我想要做的:我有图像视图,当我触摸它时,它的效果就像更改颜色过滤器(通知用户按钮被触摸),当我将手指拖到图像远处时,它变为正常(通知用户图像未被触摸)再次,当我将手指拖动到imgView附近时,它会再次产生效果,在我看来,您确实需要一个状态列表选择器,只需正常单击。无“拖动、关闭、远、触摸、非触摸……”。单击或未单击。有视觉反馈,我想就是这样。我想让imageView的行为与我们在playsore上看到的应用程序按钮类似,如何做到这一点,抱歉英语不好:@SachinS的回答几乎是好的。只是我会为项目使用单独的文件,并为not pressed状态使用默认大小写,而不是使用pressed=“false”。参考:完成了,但是现在我应该在MainActivity.java中做什么,这是我第一次使用这个方法,那么我应该在代码中做什么呢?删除setOnTouchListener,不需要这样做。答案呢?当我单击图像nothing changes时,我创建了change.xml并编写了u提出的代码,并添加了属性
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;
}