手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android自定义ImageView实现在图片上添加图层效果
Android自定义ImageView实现在图片上添加图层效果
摘要:首先我们先看下效果图实现思路这是两张前后对比图,右边第二张图里面的已抢光标签图片当已经没有商品的时候就会显示了,在每个图片的中心位置,第一想...

首先我们先看下效果图

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

实现思路

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

实现方法

<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <SelectableRoundedImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@drawable/youxuan_bg_shape_normol" android:contentDescription="@string/app_name" android:padding="1dp" android:scaleType="centerCrop" /> <ImageView android:id="@+id/iv_empty_pic" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </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中:

<com.henanjianye.soon.communityo2o.view.CenterImage android:id="@+id/goodsImage" android:layout_width="match_parent" android:layout_height="100dp" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:contentDescription="@string/app_name" android:scaleType="centerCrop" android:src="@mipmap/yijia_default_bg" />

代码中拿到CenterImage的对象:

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

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

总结

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

【Android自定义ImageView实现在图片上添加图层效果】相关文章:

android中自定义checkbox的图片和大小

Android自定义图片质量的控件截图类代码

Android自定义控件之自定义属性

Android实现多线程断点下载的方法

android 实现圆角图片解决方案

Android-对自定义类型的list排序

Android自定义Adapter的ListView的思路及代码

Android自定义View设定到FrameLayout布局中实现多组件显示的方法 分享

android 自定义ScrollView实现背景图片伸缩的实现代码及思路

Android 自定义View的使用介绍

精品推荐
分类导航