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

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

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

本文實(shí)例為大家分享了自定義Drawable實(shí)現(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 實(shí)現(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; //設(shè)置系統(tǒng)默認(rèn),讓drawable支持和窗口一樣的透明度
  }

  //還需要從重寫以下2個(gè)方法,返回drawable實(shí)際寬高
  @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 實(shí)現(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; //設(shè)置系統(tǒng)默認(rèn),讓drawable支持和窗口一樣的透明度
  }

  //還需要從重寫以下2個(gè)方法,返回drawable實(shí)際寬高
  @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));

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

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

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

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

    Android之仿美團(tuán)加載數(shù)據(jù)幀動(dòng)畫

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

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

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

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

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

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

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

    item高度不同時(shí)Recyclerview獲取滑動(dòng)距離的方法

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

    Android中SurfaceView用法簡(jiǎn)單實(shí)例

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

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

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

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

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

    android之自定義Toast使用方法

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

最新評(píng)論

河南省| 昌都县| 长丰县| 吉林省| 庄浪县| 哈尔滨市| 长宁县| 磴口县| 嵊泗县| 安阳县| 颍上县| 扶沟县| 滨海县| 长治市| 西青区| 贵阳市| 海林市| 金塔县| 大冶市| 乌恰县| 昭觉县| 安新县| 自贡市| 永定县| 喀喇| 汉中市| 偏关县| 都匀市| 闻喜县| 莱西市| 海门市| 弥勒县| 新干县| 前郭尔| 平泉县| 虞城县| 广宁县| 河北省| 乌海市| 鲁山县| 九江县|