How can I give an imageview click effect like a button on Android?

前端 未结 30 2235
情歌与酒
情歌与酒 2020-11-28 01:50

I have imageview in my Android app that I am using like a button with the onClick event given, but as you might guess it is not giving imageview a clickable effect when clic

30条回答
  •  渐次进展
    2020-11-28 02:03

    This worked for me:

    img.setOnTouchListener(new OnTouchListener(){
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction())
                    {
                        case MotionEvent.ACTION_DOWN:
                        {
                            ((ImageView)v).setImageAlpha(200);
                            break;
                        }
                        case MotionEvent.ACTION_MOVE:
                        {
                            // if inside bounds
                            if(event.getX() > 0 && event.getX() < v.getWidth() && event.getY() > 0 && event.getY() < v.getHeight())
                            {
                                ((ImageView)v).setImageAlpha(200);
                            }
                            else
                            {
                                ((ImageView)v).setImageAlpha(255);
                            }
    
                            break;
                        }
                        case MotionEvent.ACTION_UP:
                        {
                            ((ImageView)v).setImageAlpha(255);
                        }
                    }
                    return true;
                }
    
            });
    

    @Edit: As Gunhan said there will be backward compatibility problem with setImageAlpha method. I used this method:

    public static void setImageAlpha(ImageView img, int alpha)
        {
            if(Build.VERSION.SDK_INT > 15)
            {
                img.setImageAlpha(alpha);
            }
            else
            {
                img.setAlpha(alpha);
            }
        }
    

提交回复
热议问题