Android自定義ImageView實現(xiàn)在圖片上添加圖層效果
首先我們先看下效果圖
實現(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í)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
- Android使用控件ImageView加載圖片的方法
- Android 自定義圓形頭像CircleImageView支持加載網(wǎng)絡(luò)圖片的實現(xiàn)代碼
- 詳解Android中Glide與CircleImageView加載圓形圖片的問題
- android imageview圖片居中技巧應(yīng)用
- Android實現(xiàn)ImageView圖片雙擊放大及縮小
- Android中ImageView使用網(wǎng)絡(luò)圖片資源的方法
- Android開發(fā)之imageView圖片按比例縮放的實現(xiàn)方法
- Android實現(xiàn)ImageView陰影和圖層效果
- Android實現(xiàn)ImageView圖片縮放和拖動
- Android開發(fā)實現(xiàn)ImageView加載攝像頭拍攝的大圖功能
相關(guān)文章
AndroidStudio接入Unity工程并實現(xiàn)相互跳轉(zhuǎn)的示例代碼
這篇文章主要介紹了AndroidStudio接入Unity工程并實現(xiàn)相互跳轉(zhuǎn),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12Android利用ObjectAnimator實現(xiàn)ArcMenu
這篇文章主要為大家詳細(xì)介紹了Android利用ObjectAnimator實現(xiàn)ArcMenu的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07Android適配利用webview加載后圖片顯示過大的問題解決
這篇文章主要給大家介紹了關(guān)于Android適配利用webview加載后圖片顯示過大問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Android RecyclerView實現(xiàn)吸頂動態(tài)效果流程分析
RecyclerView是Android一個更強(qiáng)大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現(xiàn)數(shù)據(jù)縱向滾動,也可以實現(xiàn)橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法2022-12-12Android實現(xiàn)底部對話框BottomDialog彈出實例代碼
本篇文章主要介紹了Android實現(xiàn)底部對話框BottomDialog代碼。這里整理了詳細(xì)的代碼,有需要的小伙伴可以參考下。2017-03-03Android仿QQ在狀態(tài)欄顯示登錄狀態(tài)效果
這篇文章主要介紹了Android仿QQ在狀態(tài)欄顯示登錄狀態(tài)效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12Android studio 下JNI編程實例并生成so庫的實現(xiàn)代碼
這篇文章主要介紹了Android studio 下JNI編程實例并生成so庫,需要的朋友可以參考下2017-09-09Android TabHost選項卡標(biāo)簽圖標(biāo)始終不出現(xiàn)的解決方法
這篇文章主要介紹了Android TabHost選項卡標(biāo)簽圖標(biāo)始終不出現(xiàn)的解決方法,涉及Android界面布局相關(guān)屬性與狀態(tài)設(shè)置操作技巧,需要的朋友可以參考下2019-03-03RecyclerView 源碼淺析測量 布局 繪制 預(yù)布局
這篇文章主要介紹了RecyclerView 源碼淺析測量 布局 繪制 預(yù)布局,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12