欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android自定義ImageView實現(xiàn)在圖片上添加圖層效果

 更新時間:2016年11月13日 14:30:53   作者:_小馬快跑_  
這篇文章給大家主要介紹了利用Android自定義ImageView如何實現(xiàn)在圖片上添加圖層的效果,實現(xiàn)的效果類似在圖片增加秒殺、搶光等標(biāo)簽圖片,對大家開發(fā)的時候具有一定的參考借鑒價值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。

首先我們先看下效果圖

實現(xiàn)思路

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

實現(xiàn)方法

<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>

這樣當(dāng)然是可以的,然而如果XML布局本身就很復(fù)雜,用這樣的寫法又給View Tree加了一層,不夠優(yōu)雅,下面介紹另一種實現(xiàn)方式:自定義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);

當(dāng)setCenterImgShow()里的invalidate()方法被調(diào)用后,CenterImage的onDraw()方法會重新被調(diào)用并重新繪制,這樣就可以愉快地在ImageView的上面新加一個圖層。

總結(jié)

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

相關(guān)文章

最新評論