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

Android自定義Drawable實現(xiàn)圓形和圓角

 更新時間:2017年09月27日 11:50:28   作者:hust_twj  
這篇文章主要為大家詳細介紹了Android自定義Drawable實現(xiàn)圓形和圓角,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了自定義Drawable實現(xiàn)圓形和圓角的具體代碼,供大家參考,具體內(nèi)容如下

圓形

package com.customview.widget;

import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

/**
 * 自定義Drawable 實現(xiàn)圓形圖片
 * Created by hust_twj on 2017/9/26.
 */

public class CircleDrawable extends Drawable {
  private Paint mPaint;
  private int mWidth; //寬/高,直徑
  private Bitmap mBitmap;

  public CircleDrawable(Bitmap bitmap) {
    this.mBitmap = bitmap;
    BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//著色器 水平和豎直都需要填充滿
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setShader(bitmapShader);
    mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight()); //寬高的最小值作為直徑
  }

  @Override
  public void draw(@NonNull Canvas canvas) {
    canvas.drawCircle(mWidth/2, mWidth/2, mWidth/2, mPaint); //繪制圓形
  }

  @Override
  public void setAlpha(@IntRange(from = 0, to = 255) int i) {
    mPaint.setAlpha(i);
  }

  @Override
  public void setColorFilter(@Nullable ColorFilter colorFilter) {
    mPaint.setColorFilter(colorFilter);
  }

  @Override
  public int getOpacity() {
    return PixelFormat.TRANSLUCENT; //設置系統(tǒng)默認,讓drawable支持和窗口一樣的透明度
  }

  //還需要從重寫以下2個方法,返回drawable實際寬高
  @Override
  public int getIntrinsicWidth() {
    return mWidth;
  }

  @Override
  public int getIntrinsicHeight() {
    return mWidth;
  }


}

圓角:

package com.customview.widget;

import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.RectF;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

/**
 * 自定義Drawable 實現(xiàn)圓角圖片
 * Created by hust_twj on 2017/9/26.
 */

public class RoundCornerDrawable extends Drawable {
  private Paint mPaint;
  private RectF rectF;//定義矩形區(qū)域
  private Bitmap mBitmap;

  public RoundCornerDrawable(Bitmap bitmap) {
    this.mBitmap = bitmap;
    BitmapShader bitmapShader = new BitmapShader(mBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);//著色器 水平和豎直都需要填充滿
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setShader(bitmapShader);
    //rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
  }

  @Override
  public void draw(@NonNull Canvas canvas) {
    //RectF:圓角矩形區(qū)域
    canvas.drawRoundRect(new RectF(0, 0, mBitmap.getWidth(), mBitmap.getHeight()),100, 100, mPaint);//rx:x方向上的圓角半徑; ry:y方向上的圓角半徑。
  }

/*  @Override
  public void setBounds(int left, int top, int right, int bottom) {
    super.setBounds(left, top, right, bottom);
    rectF = new RectF(left, top, right, bottom);
  }*/

  @Override
  public void setAlpha(@IntRange(from = 0, to = 255) int i) {
    mPaint.setAlpha(i);
  }

  @Override
  public void setColorFilter(@Nullable ColorFilter colorFilter) {
    mPaint.setColorFilter(colorFilter);
  }

  @Override
  public int getOpacity() {
    return PixelFormat.TRANSLUCENT; //設置系統(tǒng)默認,讓drawable支持和窗口一樣的透明度
  }

  //還需要從重寫以下2個方法,返回drawable實際寬高
  @Override
  public int getIntrinsicWidth() {
    return mBitmap.getWidth();
  }

  @Override
  public int getIntrinsicHeight() {
    return mBitmap.getHeight();
  }

}

MainActivity中:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.XXX);
imageView.setImageDrawable(new RoundCornerDrawable(bitmap));

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android調(diào)節(jié)屏幕亮度實現(xiàn)代碼

    Android調(diào)節(jié)屏幕亮度實現(xiàn)代碼

    這篇文章主要介紹了Android調(diào)節(jié)屏幕亮度實現(xiàn)代碼,調(diào)節(jié)屏幕亮度時,先設置當前activity亮度,再并保存為系統(tǒng)亮度即可,本文分別給出兩個步驟的實現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • Android之仿美團加載數(shù)據(jù)幀動畫

    Android之仿美團加載數(shù)據(jù)幀動畫

    本文主要介紹了Android仿美團加載數(shù)據(jù)幀動畫的實例方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 詳解Flutter和Dart取消Future的三種方法

    詳解Flutter和Dart取消Future的三種方法

    這篇文章主要為大家詳細介紹了在Flutter和Dart中取消Future的三種方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-04-04
  • Android 彩色Toast的實現(xiàn)代碼

    Android 彩色Toast的實現(xiàn)代碼

    這篇文章主要介紹了Android 彩色Toast的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-10-10
  • Android編程獲取通知欄高度的方法

    Android編程獲取通知欄高度的方法

    這篇文章主要介紹了Android編程獲取通知欄高度的方法,涉及Android針對通知欄屬性相關(guān)操作技巧,需要的朋友可以參考下
    2016-01-01
  • item高度不同時Recyclerview獲取滑動距離的方法

    item高度不同時Recyclerview獲取滑動距離的方法

    這篇文章主要介紹了item高度不同時Recyclerview獲取滑動距離的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Android中SurfaceView用法簡單實例

    Android中SurfaceView用法簡單實例

    這篇文章主要介紹了Android中SurfaceView用法,以一個簡單的圖形繪制及改變位置實現(xiàn)方法分析了SurfaceView的使用技巧,需要的朋友可以參考下
    2015-10-10
  • Android開發(fā)系列三之窗口的常用事件

    Android開發(fā)系列三之窗口的常用事件

    這篇文章主要介紹了Android開發(fā)系列三之窗口的常用事件的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • Android 判斷網(wǎng)絡狀態(tài)實例詳解

    Android 判斷網(wǎng)絡狀態(tài)實例詳解

    這篇文章主要介紹了Android 判斷網(wǎng)絡狀態(tài)實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • android之自定義Toast使用方法

    android之自定義Toast使用方法

    有時我們的程序使用默認的Toast時會和程序的整體風格不搭配,這個時候我們就需要自定義Toast,使其與我們的程序更加融合,使用自定義Toast,首先我們需要添加一個布局文件,該布局文件的結(jié)構(gòu)和Activity使用的布局文件結(jié)構(gòu)一致,在該布局文件中我們需設計我們Toast的布局
    2013-01-01

最新評論

马龙县| 娄底市| 上饶市| 沙坪坝区| 紫阳县| 苗栗市| 吴堡县| 青川县| 泌阳县| 常宁市| 长泰县| 万全县| 宜川县| 东至县| 唐海县| 册亨县| 威海市| 津南区| 仁布县| 永嘉县| 克山县| 昆明市| 屯留县| 临澧县| 历史| 霍邱县| 天津市| 腾冲县| 兰西县| 凌云县| 东城区| 利津县| 喜德县| 二手房| 淮北市| 嘉禾县| 习水县| 洛浦县| 阿拉善盟| 虞城县| 达日县|