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

    点击前效果

    点击后效果

  • 相关阅读:
    slf4j + log4j 记录日志
    Executors介绍
    Java集合(JDK1.6.0_45)
    Java多线程系列目录(共43篇)
    线程池体系
    FutureTask
    23种设计模式分类
    结构型 之 适配器模式
    信号量Semaphore详解以及应用
    Excel格式转化工具
  • 原文地址:https://www.cnblogs.com/ycclmy/p/3084293.html
Copyright © 2011-2022 走看看