最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android使用自定義ImageView實現(xiàn)圓形圖片效果

 更新時間:2018年05月16日 09:48:32   作者:Jamy Cai  
本篇文章主要介紹了Android使用自定義ImageView實現(xiàn)圓形圖片效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

android中的ImageView只能顯示矩形的圖片,這樣一來不能滿足我們其他的需求,比如要顯示圓形的圖片,這個時候,我們就需要自定義ImageView了,其原理就是首先獲取到圖片的Bitmap,然后進(jìn)行裁剪圓形的bitmap,然后在onDraw()進(jìn)行繪制圓形圖片輸出。

效果圖如下:

自定義的圓形的ImageView類的實現(xiàn)代碼如下:

package com.xc.xcskin.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
 * 自定義的圓形ImageView,可以直接當(dāng)組件在布局中使用。
 * @author caizhiming
 *
 */
public class XCRoundImageView extends ImageView{
 private Paint paint ;
 public XCRoundImageView(Context context) { 
 this(context,null); 
 } 
 public XCRoundImageView(Context context, AttributeSet attrs) { 
 this(context, attrs,0); 
 } 
 public XCRoundImageView(Context context, AttributeSet attrs, int defStyle) { 
 super(context, attrs, defStyle); 
 paint = new Paint();
 } 
 /**
 * 繪制圓形圖片
 * @author caizhiming
 */
 @Override 
 protected void onDraw(Canvas canvas) { 
 Drawable drawable = getDrawable(); 
 if (null != drawable) { 
 Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); 
 Bitmap b = getCircleBitmap(bitmap, 14); 
 final Rect rectSrc = new Rect(0, 0, b.getWidth(), b.getHeight()); 
 final Rect rectDest = new Rect(0,0,getWidth(),getHeight());
 paint.reset(); 
 canvas.drawBitmap(b, rectSrc, rectDest, paint); 
 } else { 
 super.onDraw(canvas); 
 } 
 } 
 /**
 * 獲取圓形圖片方法
 * @param bitmap
 * @param pixels
 * @return Bitmap
 * @author caizhiming
 */
 private Bitmap getCircleBitmap(Bitmap bitmap, int pixels) { 
 Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
 bitmap.getHeight(), Config.ARGB_8888); 
 Canvas canvas = new Canvas(output); 
 final int color = 0xff424242;
 final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
 paint.setAntiAlias(true); 
 canvas.drawARGB(0, 0, 0, 0); 
 paint.setColor(color); 
 int x = bitmap.getWidth(); 
 canvas.drawCircle(x / 2, x / 2, x / 2, paint); 
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
 canvas.drawBitmap(bitmap, rect, rect, paint); 
 return output; 
 
 } 
} 

完成這個自定義類后,就可以使用這個類了,就是把這個當(dāng)組件在布局中使用即可,比如:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" > 
 <com.xc.xcskin.view.XCRoundImageView
 android:id="@+id/roundImageView" 
 android:layout_centerInParent="true" 
 android:layout_width="200dp" 
 android:layout_height="200dp"
 android:src="@drawable/roundimageview"
 /> 
</RelativeLayout>

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Retrofit網(wǎng)絡(luò)請求框架之注解解析和動態(tài)代理

    Retrofit網(wǎng)絡(luò)請求框架之注解解析和動態(tài)代理

    這篇文章主要介紹了Retrofit網(wǎng)絡(luò)請求框架之注解解析和動態(tài)代理,Retrofit是目前Android平臺上比較流行的網(wǎng)絡(luò)請求框架之一,它提供了一種簡潔、靈活的方式來處理HTTP請求和響應(yīng)
    2023-03-03
  • Android ViewPager實現(xiàn)頁面左右切換效果

    Android ViewPager實現(xiàn)頁面左右切換效果

    這篇文章主要為大家詳細(xì)介紹了Android ViewPager實現(xiàn)頁面左右切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • java  深入理解內(nèi)存映射文件原理

    java 深入理解內(nèi)存映射文件原理

    這篇文章主要介紹了java 深入理解內(nèi)存映射文件原理的相關(guān)資料,虛擬內(nèi)存與內(nèi)存映射文件的區(qū)別與聯(lián)系,內(nèi)存映射文件的原理和效率,需要的朋友可以參考下
    2016-11-11
  • Android中WebView的一些簡單用法

    Android中WebView的一些簡單用法

    這篇文章主要介紹了Android中WebView的一些簡單用法,WebView非常簡單,Android已經(jīng)封裝的非常完善,寫個小例子覆蓋其間常用的幾個方法;
    2016-08-08
  • Flutter Drawer抽屜菜單示例詳解

    Flutter Drawer抽屜菜單示例詳解

    這篇文章主要為大家詳細(xì)介紹了Flutter Drawer抽屜菜單示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Android Room數(shù)據(jù)庫容易遇到的問題以及解決方法

    Android Room數(shù)據(jù)庫容易遇到的問題以及解決方法

    這篇文章給大家介紹了我們在Android Room數(shù)據(jù)庫容易遇到的坑以及解決方法,文中有詳細(xì)的代碼示例供我們參考,具有一定的參考價值,需要的朋友可以參考下
    2023-09-09
  • Android自定義TipView仿QQ長按后的提示窗口

    Android自定義TipView仿QQ長按后的提示窗口

    這篇文章主要介紹了Android自定義TipView仿QQ長按后的提示窗口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Android使用httpPost向服務(wù)器發(fā)送請求的方法

    Android使用httpPost向服務(wù)器發(fā)送請求的方法

    這篇文章主要介紹了Android使用httpPost向服務(wù)器發(fā)送請求的方法,實例分析了Android針對HttpPost類的操作技巧,需要的朋友可以參考下
    2015-12-12
  • Android自定義狀態(tài)欄顏色與APP風(fēng)格保持一致的實現(xiàn)方法

    Android自定義狀態(tài)欄顏色與APP風(fēng)格保持一致的實現(xiàn)方法

    我們知道iOS上的應(yīng)用,狀態(tài)欄的顏色總能與應(yīng)用標(biāo)題欄顏色保持一致,用戶體驗很不錯,那安卓是否可以呢?下面小編給大家?guī)砹薃ndroid自定義狀態(tài)欄顏色與APP風(fēng)格保持一致的實現(xiàn)方法,跟著小編一起學(xué)習(xí)吧
    2016-10-10
  • android監(jiān)聽返回按鈕事件的方法

    android監(jiān)聽返回按鈕事件的方法

    這篇文章主要介紹了android監(jiān)聽返回按鈕事件的方法,涉及Android事件監(jiān)聽的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論

南澳县| 乌海市| 仁寿县| 义马市| 伊金霍洛旗| SHOW| 驻马店市| 班戈县| 海淀区| 龙井市| 揭西县| 揭东县| 博爱县| 东明县| 赣州市| 永安市| 睢宁县| 定远县| 伊金霍洛旗| 宝坻区| 喀喇| 曲麻莱县| 吉木乃县| 汉沽区| 威远县| 巴南区| 上饶市| 卫辉市| 林口县| 福海县| 修文县| 连城县| 左云县| 兴和县| 汉中市| 沅江市| 额尔古纳市| 尚义县| 浦北县| 长海县| 若尔盖县|