• 一张图片实现点击效果


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

    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));调用上面的方法就行了。

    点击前效果

    点击后效果

  • 相关阅读:
    经典机器学习算法总结
    从0开始学Python---01
    Android-Canvas.save() Canvas.restore() 总结
    Android-属性动画原理总结
    设计模式-外观模式
    设计模式-模板方法
    设计模式-装饰者模式
    设计模式-策略模式
    设计模式-工厂方法模式
    设计模式-简单工厂模式
  • 原文地址:https://www.cnblogs.com/ycclmy/p/3084293.html
Copyright © 2020-2023  润新知