Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 触摸完ImageView后_Android_Android Imageview - Fatal编程技术网

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提出的代码,并添加了属性在content_main.xml的imageView中,在java代码中,我只让两个函数super.oncreate和setcontentview(content_main).但最终我通过Java代码得到了我想要的,请看问题,我已经修改了那里的代码,但我仍然在问为什么你的答案对我不起作用?我必须添加属性android:clickable=“true“这就是我们错过的,谢谢大家;)谢谢你,这很有帮助;)但如果我仍在触摸并返回图像视图并对其进行操作,则逻辑上必须触发事件Onclick如何在操作中执行此操作,添加一个if语句以检查finger是否在视图中(就像我在操作中移动一样)。然后使用视图的callOnClick()方法手动触发onClick事件。
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;
}