位置: 編程技術 - 正文
推薦整理分享ImageView的圓形圖片顯示(imageview tint),希望有所幫助,僅作參考,歡迎閱讀內容。
文章相關熱門搜索詞:imagej怎么畫圓,圓形圖怎么顯示數(shù)據(jù),image圓角,image圓角,image圓角,imageview tint,imageview設置圖片圓角,img 圓形,內容如對您有幫助,希望把文章鏈接給更多的朋友!
在很多應用中,我們看到,個人主頁里面的頭像一般都是圓的,設計成圓的會使整個界面布局變的優(yōu)雅漂亮。那么,怎么使頭像變圓呢?有的人說可以在上面加一個中間為透明圓形的png圖,用它來遮蓋住頭像不就行了嘛,但是png四周始終始終是不透明的,怎么做也達不到如下的效果圖的。
下面我們講講怎么做成的吧。
首先創(chuàng)建一個繼承ImageView的抽象類MaskedImage。讓他重寫onDraw方法。代碼如下
public abstract class MaskedImage extends ImageView { private static final Xfermode MASK_XFERMODE; private Bitmap mask; private Paint paint; static { PorterDuff.Mode localMode = PorterDuff.Mode.DST_IN; MASK_XFERMODE = new PorterDuffXfermode(localMode); } public MaskedImage(Context paramContext) { super(paramContext); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public MaskedImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public abstract Bitmap createMask(); protected void onDraw(Canvas paramCanvas) { Drawable localDrawable = getDrawable(); if (localDrawable == null) return; try { if (this.paint == null) { Paint localPaint1 = new Paint(); this.paint = localPaint1; this.paint.setFilterBitmap(false); Paint localPaint2 = this.paint; Xfermode localXfermode1 = MASK_XFERMODE; @SuppressWarnings("unused") Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1); } float f1 = getWidth(); float f2 = getHeight(); int i = paramCanvas.saveLayer(0.0F, 0.0F, f1, f2, null, ); int j = getWidth(); int k = getHeight(); localDrawable.setBounds(0, 0, j, k); localDrawable.draw(paramCanvas); if ((this.mask == null) || (this.mask.isRecycled())) { Bitmap localBitmap1 = createMask(); this.mask = localBitmap1; } Bitmap localBitmap2 = this.mask; Paint localPaint3 = this.paint; paramCanvas.drawBitmap(localBitmap2, 0.0F, 0.0F, localPaint3); paramCanvas.restoreToCount(i); return; } catch (Exception localException) { StringBuilder localStringBuilder = new StringBuilder() .append("Attempting to draw with recycled bitmap. View ID = "); System.out.println("localStringBuilder=="localStringBuilder); } } } 然后新建一個類CircularImage繼承MaskedImage。代碼如下:public class CircularImage extends MaskedImage { public CircularImage(Context paramContext) { super(paramContext); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public CircularImage(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } public Bitmap createMask() { int i = getWidth(); int j = getHeight(); Bitmap.Config localConfig = Bitmap.Config.ARGB_; Bitmap localBitmap = Bitmap.createBitmap(i, j, localConfig); Canvas localCanvas = new Canvas(localBitmap); Paint localPaint = new Paint(1); localPaint.setColor(-); float f1 = getWidth(); float f2 = getHeight(); RectF localRectF = new RectF(0.0F, 0.0F, f1, f2); localCanvas.drawOval(localRectF, localPaint); return localBitmap; } }新建一個MainActivity,代碼如下:public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); CircularImage cover_user_photo = (CircularImage) findViewById(R.id.cover_user_photo); cover_user_photo.setImageResource(R.drawable.face); } } 其XML布局文件為:<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" > <ImageView android:layout_width=".0dip" android:layout_height=".0dip" android:layout_centerInParent="true" android:contentDescription="@null" android:src="@drawable/me_head_bg" /> <com.doublefi.diary.widget.CircularImage android:id="@id/cover_user_photo" android:layout_width=".0dip" android:layout_height=".0dip" android:layout_centerInParent="true" /> </RelativeLayout> 如此即可【Android】標簽頁、計時器、單選按鈕、復選按鈕 寫一個小程序把安卓程序中的幾個基礎組件的基本用法串聯(lián)起來。如下圖所示:在安卓程序中,一個計時器,一直在不斷地計時,每秒彈出一個提示。
[安卓]手機管家(二)splash續(xù) 繼續(xù)之前對比了用戶和服務器端版本,當可升級的時候,要做進一步處理,而不僅僅是toast一個有新版本
安卓開發(fā)-測試 黑盒測試:以用戶角度,從輸入的數(shù)據(jù)與輸出數(shù)據(jù)的對應關系進行測試--(用戶角度)白盒測試:又稱為結構測試,透明盒測試,邏輯驅動測試或者叫基
標簽: imageview tint
本文鏈接地址:http://esstyw.cn/biancheng/386066.html 轉載請保留說明!網(wǎng)站地圖: 企業(yè)信息 工商信息 財稅知識 網(wǎng)絡常識 編程技術
友情鏈接: 武漢網(wǎng)站建設