温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ImageButton单击切换按钮图片

发布时间:2020-07-20 14:14:33 来源:网络 阅读:6321 作者:mac_xiao 栏目:移动开发

有时单击ImageButton图片按钮时需要获取变换图片的效果,在这里介绍两种方法仅供参考

正常显示

ImageButton单击切换按钮图片

点击切换

ImageButton单击切换按钮图片


方法一:通过给按钮配置XML文件来实现图片按钮的背景切换效果

在layout或者是drawable文件下添加一个p_w_picpathbtn_select.xml文件

<?xml version="1.0" encoding="utf-8"?>   
<selector xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:state_pressed="false" android:drawable="@drawable/img_smile"/>
    <item android:state_focused="true" android:drawable="@drawable/img_happy"/>
    <item android:state_pressed="true" android:drawable="@drawable/img_love"/>
</selector>

其中的

<item android:state_focused="true" android:drawable="@drawable/img_happy"/>

是指是否取得焦点,比如用户选择了一个文本框。


再在main.xml文件中设置ImageButton属性,并引用上述文件作为图片按钮的背景

<ImageButton
      android:id="@+id/p_w_picpathbtn1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:background="@drawable/p_w_picpathbtn_select"
/>

这里千万不能设置android:src属性,否则将无法显示图片切换效果


方法二:在java代码中为图片按钮增加触摸监听的函数来实现图片切换

final ImageButton btn = (ImageButton)findViewById(R.id.p_w_picpathbtn1);          
btn.setOnTouchListener(new View.OnTouchListener(){            
    public boolean onTouch(View v, MotionEvent event) {               
            if(event.getAction() == MotionEvent.ACTION_DOWN){       
               //重新设置按下时的背景图片  
               btn.setImageResource(R.drawable.smile); 
            }else if(event.getAction() == MotionEvent.ACTION_UP){       
                //再修改为抬起时的正常图片  
               btn.setImageResource(R.drawable.love);
            }  
            return false;       
    }       
});

这里讲解下onClick()和onTouch()方法的区别:

onClick传入的参数就一个onClick(View v)而 onTouch为onTouch(View v, MotionEvent event)显然后者可以对控件有更丰富的操作,比如判断触摸的状态(比如按下,或者放开),和得到点击的位置等等,因此可以通过观察方法参数来推测方法的使用

利用MotionEvent.getAction()函数判断用户触发事件的类型,有2种类型:

1、MotionEvent.ACTION_DOWN  按下事件

2、MotionEvent.ACTION_UP    抬起事件

通过event.getAction()来获取用户的动作 ,

根据事件的不同通过调用setImageResource()来设置背景图片即可。ImageButton单击切换按钮图片





向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI