9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 學習電腦 > 電腦技巧 > android ImageView圓形的圖片自定義教程

android ImageView圓形的圖片自定義教程

時間: 本達868 分享

android ImageView圓形的圖片自定義教程

  ImageView 是android提供的一個圖片展示控件,常見的形狀是都是矩形的,我們在應用中往往看到都是圓形的圖片,那么如何實現呢?下面學習啦小編告訴你!

  android ImageView圓形的圖片自定義教程

  首先,新建一個android項目,名稱為CircleImageView,其余參數可以自己設置,點擊完成生成項目信息。這個例子中,CircleImageViewShow不用做任何改變

  定義一個CircleImageEx 繼承ImageView,主要功能是改寫onDraw函數完成,圖片信息的改寫。onDraw函數的實現:

  @Override

  protected void onDraw(Canvas canvas) {

  // TODO Auto-generated method stub

  Drawable drawable = getDrawable();

  if (drawable == null) {

  return;

  }

  if (getWidth() == 0 || getHeight() == 0) {

  return;

  }

  //獲取圖片,轉化為Bitmap

  Bitmap b = ((BitmapDrawable)drawable).getBitmap();

  if(null == b)

  {

  return;

  }

  //將圖片轉為32位ARGB位圖,保證圖片質量

  Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true);

  // //獲取圖片的寬 高

  int w = getWidth(), h = getHeight();

  //通過getCroppedBitmap函數,返回一個圓形圖片

  Bitmap roundBitmap = getCroppedBitmap(bitmap, w);

  //在自定義的CircleImageEx上展現

  canvas.drawBitmap(roundBitmap, 0,0, null);

  }

  針對getCroppedBitmap函數,如何畫出圓形的圖片呢?

  public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) {

  Bitmap p;

  //判斷圖片的大小與傳入radius是否相等,如果不相等,那么

  //將圖片設置成長 寬都是radius的圖片

  if(bmp.getWidth() != radius || bmp.getHeight() != radius)

  p = Bitmap.createScaledBitmap(bmp, radius, radius, false);

  else

  p = bmp;

  //最后輸出的圖片信息

  Bitmap output = Bitmap.createBitmap(p.getWidth(),

  p.getHeight(), Config.ARGB_8888);

  Canvas canvas = new Canvas(output);

  final int color = 0xffa19774;

  final Paint paint = new Paint();

  final Rect rect = new Rect(0, 0, p.getWidth(), p.getHeight());

  //畫筆加上 抗鋸齒標志,圖像更加平滑

  paint.setAntiAlias(true);

  //如果該項設置為true,則圖像在動畫進行中會濾掉對Bitmap圖像的優化操作,加快顯示

  paint.setFilterBitmap(true);

  //防抖動

  paint.setDither(true);

  // 透明色

  canvas.drawARGB(0, 0, 0, 0);

  //畫筆的顏色

  paint.setColor(Color.parseColor("#BAB399"));

  //畫出一個圓形

  canvas.drawCircle(p.getWidth() / 2+0.7f, p.getHeight() / 2+0.7f,

  p.getWidth() / 2+0.1f, paint);

  //設置兩張圖片相交時的模式 ,就是在畫布上遮上圓形的圖片信息

  paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));

  canvas.drawBitmap(p, rect, rect, paint);

  return output;

  }

  其中 paint.setXfermode(new PorterDuffXfermode(android.graphics.PorterDuff.Mode.SRC_IN));

  設置兩張圖片相交時的模式 我們知道 在正常的情況下,在已有的圖像上繪圖將會在其上面添加一層新的形狀。 如果新的Paint是完全不透明的,那么它將完全遮擋住下面的Paint; 而setXfermode就可以來解決這個問題 ,具體的遮擋的效果可以參見下圖

  在main.xml中調用自定義的控件CircleImageEx,

  <.cn.CircleImageEx

  android:id="@+id/imageView"

  android:layout_width="200dip" //定義圖片的寬度

  android:layout_height="200dip" //這個就是定義圖片的高度

  android:scaleType="centerInside"

  android:src="@drawable/seven" /> //圖片來源

  我們運行程序,觀察下結果,我們先看下原圖片

  END

看了“android ImageView圓形的圖片自定義教程”的人還看了

1.android基礎教程視頻:ImageView實現圖片旋轉和縮放

2.android基礎教程視頻:ImageView實現適屏和裁剪圖片

3.android工程師個人簡歷模板

4.android開發工程師簡歷模板

2076927 主站蜘蛛池模板: 精品国产综合一区二区三区 | 人妻中文字幕一区二区三| 一区二区三区不卡国产| 影音先锋女人AA鲁色资源| 尹人香蕉久久99天天拍| 91人妻熟妇在线视频| 色综合久久综合中文综合网| 亚洲中文久久久精品无码| 欧美极品色午夜在线视频| 国产成人AV男人的天堂| 亚洲午夜激情久久加勒比| 亚洲 日本 欧洲 欧美 视频| 亚洲AV午夜电影在线观看| 亚洲三级香港三级久久| 中文字幕亚洲综合第一页| 91高清免费国产自产拍| 暖暖 在线 日本 免费 中文| 丝袜老师办公室里做好紧好爽| 亚洲国产日韩a在线播放| 少妇人妻偷人精品一区二| 亚洲欧美中文日韩V在线观看| 国产精品一二二区视在线 | 成年美女黄网站色大片免费看| 国产蜜臀在线一区二区三区| 人妻体内射精一区二区三区| 国产精品视频一区不卡| 公天天吃我奶躁我的在| 亚洲精品岛国片在线观看| 国产一区二区三区在线看| 爱性久久久久久久久| 国产成人免费| 日本亚洲一区二区精品久久| 高潮精品熟妇一区二区三区| 人妻日韩人妻中文字幕| 国产系列丝袜熟女精品视频| 久久综合国产色美利坚| 日韩精品一区二区三区激| 毛片大全真人在线| 欧美人成在线播放网站免费| 国产久爱免费精品视频| 国产999精品2卡3卡4卡|