Android开发中,View的图片是动态生成的,我们需要增加点击效果。像iReader 的书架中的书籍,点击变暗。


使用很简单:

ImageView iv = (ImageView) this.findViewById(R.id.image_view1);

Drawable d = Drawable.createFromPath("picPath");

StateListDrawable sld = createSLD(this, d);
iv.setImageDrawable(sld);


///增加如下两个方法:

public Drawable createDrawable(Drawable d, Paint p) {

BitmapDrawable bd = (BitmapDrawable) d;
Bitmap b = bd.getBitmap();
Bitmap bitmap = Bitmap.createBitmap(bd.getIntrinsicWidth(),
bd.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(b, 0, 0, p); // 关键代码,使用新的Paint画原图,

return new BitmapDrawable(bitmap);
}


/** 设置Selector。 本次只增加点击变暗的效果,注释的代码为更多的效果*/
public StateListDrawable createSLD(Context context, Drawable drawable) {
StateListDrawable bg = new StateListDrawable();
Paint p = new Paint();
p.setColor(0x40222222); //Paint ARGB色值,A = 0x40 不透明。RGB222222 暗色


Drawable normal = drawable;
Drawable pressed = createDrawable(drawable, p);
// p = new Paint();
// p.setColor(0x8000FF00);
// Drawable focused = createDrawable(drawable, p);
// p = new Paint();
// p.setColor(0x800000FF);
// Drawable unable = createDrawable(drawable, p);
// View.PRESSED_ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_pressed,
android.R.attr.state_enabled }, pressed);
// View.ENABLED_FOCUSED_STATE_SET
// bg.addState(new int[] { android.R.attr.state_enabled,
// android.R.attr.state_focused }, focused);
// View.ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_enabled }, normal);
// View.FOCUSED_STATE_SET
// bg.addState(new int[] { android.R.attr.state_focused }, focused);
// // View.WINDOW_FOCUSED_STATE_SET
// bg.addState(new int[] { android.R.attr.state_window_focused },
// unable);
// View.EMPTY_STATE_SET
bg.addState(new int[] {}, normal);
return bg;
}

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Android实现点击获取验证码60秒后重新获取功能
  3. Android解决CoordinatorLayout折叠布局RecyclerView最后一条数据
  4. Android-显示传感器的值
  5. IDEA 快捷键 Android(安卓)Studio快捷键
  6. Android_UI_全屏去掉标题栏和状态栏的两种方法
  7. Android(安卓)自带的系统分享功能
  8. android webview将网页内容导出为图片和PDF方法
  9. Android(安卓)代码修改按钮上的图片

随机推荐

  1. Android自定义dialog弹出布局
  2. Android(安卓)Audio代码分析19 - setPosi
  3. Android(安卓)实现Toast的快速切换刷新
  4. Android中TabHost部件使用
  5. android调用系统的分享接口
  6. Android设置Button保持Press的状态
  7. Android生命周期的学习
  8. Android(安卓)Inflate
  9. Android编译系统详解(三)
  10. Android(安卓)SharedPreferences的使用