博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中图标重叠的实现 (转载)
阅读量:5098 次
发布时间:2019-06-13

本文共 1778 字,大约阅读时间需要 5 分钟。

我们在做应用开发时,特别是在做图片浏览器或文件浏览器时,涉及到图片或文件的管理时,我们难免需要批量处理它们,就需要用到多选功能。怎么来在视觉上显示给用户文件时候已经选定了呢,我们可以改变文件名称的字体的颜色来标记,但不是很明显,最好还是在文件或图片图标上显示一个勾以表选中。在android的layout文件里,我们是用一个ImageView控件来显示一张图片,如果需要在图片上显示一个勾,非得在layout文件里实现的话,那就只能用绝对布局了,使两个ImageView重叠起来,此方法显然不可取,其自适应能力很差!

在这里,我们可以使用两种方法来实现:

第一种:使用canvas

public void first(View v) {

// 防止出现Immutable bitmap passed to Canvas constructor错误

Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(),
R.drawable.apple).copy(Bitmap.Config.ARGB_8888, true);
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();

Bitmap newBitmap = null;

newBitmap = Bitmap.createBitmap(bitmap1);

Canvas canvas = new Canvas(newBitmap);
Paint paint = new Paint();

int w = bitmap1.getWidth();

int h = bitmap1.getHeight();

int w_2 = bitmap2.getWidth();

int h_2 = bitmap2.getHeight();

paint.setColor(Color.GRAY);

paint.setAlpha(125);
canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint);

paint = new Paint();

canvas.drawBitmap(bitmap2, Math.abs(w – w_2) / 2,
Math.abs(h – h_2) / 2, paint);
canvas.save(Canvas.ALL_SAVE_FLAG);
// 存储新合成的图片
canvas.restore();

image.setImageBitmap(newBitmap);

}

 

第二种:使用LayerDrawable,具体代码如下

public void second(View v) {

Bitmap bitmap1 = ((BitmapDrawable) getResources().getDrawable(

R.drawable.apple)).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable) getResources().getDrawable(
R.drawable.go)).getBitmap();

Drawable[] array = new Drawable[2];

array[0] = new BitmapDrawable(bitmap1);
array[1] = new BitmapDrawable(bitmap2);
LayerDrawable la = new LayerDrawable(array);
// 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom
la.setLayerInset(0, 0, 0, 0, 0);
la.setLayerInset(1, 20, 20, 20, 20);
image.setImageDrawable(la);
}

转载于:https://www.cnblogs.com/joey-home/archive/2012/07/13/2590658.html

你可能感兴趣的文章
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
【转载】基于vw等viewport视区相对单位的响应式排版和布局
查看>>
<转>关于MFC的多线程类 CSemaphore,CMutex,CCriticalSection,CEvent
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
backgound-attachment属性学习
查看>>
个人作业——关于K米的产品案例分析
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
java 中的线程(一)
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
素数判断BFS之“Prime Path”
查看>>