自定义ImageView添加按下效果

作者: 芯_空 | 来源:发表于2017-08-20 15:50 被阅读0次

    在android开发中,我们经常要用到选择器,当你给每个控件写选择器的时候,你是否会感觉好麻烦..每个点击事件都要写个选择器..

    未按下 按下

    上面是大概的效果截图,说白了就是选择器的功能.
    由于我现在使用的是图片控件来实现的..现在很多点击效果都是用图片来实现的,很少用图片按钮,所有我们使用继承系统的图片控件进行重写添加选择器的功能.
    下面开始撸代码
    MyImageView .java

    public class MyImageView extends android.support.v7.widget.AppCompatImageView{
    
        private static String TAG = "MyImageView";
        private int pressId;
        private int srcId;
    
        public MyImageView(Context context) {
            this(context, null);
        }
    
        public MyImageView(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public MyImageView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            int count = attrs.getAttributeCount();
            for (int i = 0; i < count; i++) {
                String attrName = attrs.getAttributeName(i);//获取属性名称
                switch (attrName) {
                    //根据属性获取资源ID
                    case "press":
                        pressId = attrs.getAttributeResourceValue(i, 0);
                        break;
                    case "src":
                        srcId = attrs.getAttributeResourceValue(i, 0);
                        break;
                }
            }
        }
    
    
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            int action = event.getAction();
            switch (action) {
                //按下
                case MotionEvent.ACTION_DOWN:
                    if (pressId != 0)
                        this.setImageResource(pressId);
                    break;
                //移动
                case MotionEvent.ACTION_MOVE:
                    break;
                //抬起
                case MotionEvent.ACTION_UP:
                    if (srcId != 0)
                        this.setImageResource(srcId);
                    break;
            }
            return super.onTouchEvent(event);
        }
    }
    
    

    由于使用了自定义属性,所以还需要一个
    image.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="image">
            <attr name="press" format="integer" />
        </declare-styleable>
    </resources>
    
    放置位置

    下面看看引用:

    引用演示

    可以看到,引用的时候,控件需要使用我们自定义的view
    然后增加一个image的属性.press就是按下时需要展示的图片,直接设置即可.
    自定义的属性名称都可以按照自己喜欢的名字进行修改.当然 press这个属性需要与java代码中对应.
    其他使用方法就是和图片的imageView一样.

    这个只给出了一个图片控件的demo,其他控件也可以依葫芦画瓢进行自定义..
    由于自定义view比较简单,就不再进行过多的解释.
    欢迎带地址转发..谢谢!

    相关文章

      网友评论

        本文标题:自定义ImageView添加按下效果

        本文链接:https://www.haomeiwen.com/subject/cbpfdxtx.html