国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android自定義ImageView實現在圖片上添加圖層效果

2019-12-12 04:41:22
字體:
來源:轉載
供稿:網友

首先我們先看下效果圖

實現思路

這是兩張前后對比圖,右邊第二張圖里面的已搶光標簽圖片當已經沒有商品的時候就會顯示了,在每個圖片的中心位置,第一想法是在ImageView的外層再套一層RelativeLayout

實現方法

<RelativeLayout   android:layout_width="match_parent"  android:layout_height="wrap_content"> <SelectableRoundedImageView     android:id="@+id/imageView"     style="@style/margin_distance"     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的上面新加一個圖層。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赞皇县| 罗甸县| 冕宁县| 南雄市| 安顺市| 永济市| 大石桥市| 甘肃省| 东宁县| 安远县| 黄骅市| 霍城县| 三台县| 洛浦县| 彰化市| 千阳县| 蕉岭县| 衡阳县| 德安县| 莆田市| 佛学| 苍山县| 闵行区| 盐源县| 鄯善县| 酉阳| 西城区| 正安县| 滕州市| 泗水县| 巴南区| 长海县| 鸡东县| 出国| 盐津县| 台东市| 新密市| 长乐市| 嘉祥县| 普陀区| 托克逊县|