zoukankan      html  css  js  c++  java
  • 一张图片实现点击效果

    实现按钮的点击效果,往往需要两张图片,但是图片多了,项目就变得很大了,为了减少图片的目的,只需要用一张图片来实现点击的效果。查了一些资料,可以通过改变当前按钮背景的亮度,来实现这一效果。可能有更好的办法实现。

    public static StateListDrawable getStateListDrawable(Drawable normal) {
            StateListDrawable listDrawable = new StateListDrawable();
            Bitmap srcBitmap = ((BitmapDrawable) normal).getBitmap();
            Bitmap bmp = Bitmap.createBitmap(srcBitmap.getWidth(),
                    srcBitmap.getHeight(), Config.ARGB_8888);
            int brightness = 60 - 127;// 改变亮度
            ColorMatrix cMatrix = new ColorMatrix();
            cMatrix.set(new float[] { 1, 0, 0, 0, brightness, 0, 1, 0, 0,
                    brightness, 0, 0, 1, 0, brightness, 0, 0, 0, 1, 0 });
            Paint paint = new Paint();
            paint.setColorFilter(new ColorMatrixColorFilter(cMatrix));
            Canvas canvas = new Canvas(bmp);
            // 在Canvas上绘制一个Bitmap
            canvas.drawBitmap(srcBitmap, 0, 0, paint);
            Drawable pressed = new BitmapDrawable(bmp);
    
            listDrawable.addState(new int[] { android.R.attr.state_pressed },
                    pressed);
            listDrawable.addState(new int[] { android.R.attr.state_selected },
                    pressed);
            listDrawable.addState(new int[] { android.R.attr.state_enabled },
                    normal);
            return listDrawable;
        }

    只需设置按钮的setBackgroundDrawable(getStateListDrawable(XX));调用上面的方法就行了。

    点击前效果

    点击后效果

  • 相关阅读:
    <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
    <<C++ Primer>> 第二章 变量和基本类型 术语表
    <<C++ Primer>> 第一章 开始 术语表
    PAT A1077 Kuchiguse (20)
    PAT A1035 Password (20)
    PAT A1005 Spell It Right (20)
    <<C++ Primer>> 术语表 (总) (待补充)
    PAT A1001 A+B Format (20 分)
    PAT B1048 数字加密 (20)
    Protocol
  • 原文地址:https://www.cnblogs.com/ycclmy/p/3084293.html
Copyright © 2011-2022 走看看