栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android自定义ImageView实现在图片上添加图层效果

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android自定义ImageView实现在图片上添加图层效果

首先我们先看下效果图

实现思路

这是两张前后对比图,右边第二张图里面的已抢光标签图片当已经没有商品的时候就会显示了,在每个图片的中心位置,第一想法是在ImageView的外层再套一层RelativeLayout

实现方法

 
  

这样当然是可以的,然而如果XML布局本身就很复杂,用这样的写法又给View Tree加了一层,不够优雅,下面介绍另一种实现方式:自定义View

public class CenterImage extends ImageView {  
private Paint paint;  
private boolean isCenterImgShow;  
private Bitmap bitmap;  
public void setCenterImgShow(boolean centerImgShow) {    
  isCenterImgShow = centerImgShow;    
  if (isCenterImgShow) {      
  bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);      
  invalidate();    
  }  
 }  
 public CenterImage(Context context) {    
  super(context);    
  init();  
 }  
public CenterImage(Context context, AttributeSet attrs) {    
  super(context, attrs);    
  init();  
 }  
public CenterImage(Context context, AttributeSet attrs, int defStyleAttr) {    
  super(context, attrs, defStyleAttr);    
  init();  
 }  
private void init() {    
  paint = new Paint();  
 }  
@Override  
protected void onDraw(Canvas canvas) {    
 super.onDraw(canvas);    
 if (isCenterImgShow && bitmap != null) {      
 canvas.drawBitmap(bitmap, getMeasuredWidth() / 2 - bitmap.getWidth() / 2, getMeasuredHeight() / 2 - bitmap.getHeight() / 2, paint);    
 }  
 }
}

XML中:

代码中拿到CenterImage的对象:

CenterImage mGoodsImg =(CenterImage)findViewById(R.id.GoodsImage);
mGoodsImg.setCenterImgShow(true);

当setCenterImgShow()里的invalidate()方法被调用后,CenterImage的onDraw()方法会重新被调用并重新绘制,这样就可以愉快地在ImageView的上面新加一个图层。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/160730.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号