欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 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 接收推送消息跳轉(zhuǎn)到指定頁面的方法

    Android 接收推送消息跳轉(zhuǎn)到指定頁面的方法

    這篇文章主要介紹了Android 接收推送消息跳轉(zhuǎn)到指定頁面的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android實現(xiàn)地理定位功能

    Android實現(xiàn)地理定位功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)地理定位功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 詳解Android開發(fā)中ContentObserver類的使用

    詳解Android開發(fā)中ContentObserver類的使用

    這篇文章主要介紹了詳解Android開發(fā)中ContentObserver類的使用,ContentObserver內(nèi)容觀察者主要用來監(jiān)聽uri的改變請情況,需要的朋友可以參考下
    2016-04-04
  • Android獲取實時連接熱點的設備IP

    Android獲取實時連接熱點的設備IP

    這篇文章主要介紹了Android獲取實時連接熱點的設備IP 的相關資料,文中給大家補充介紹了安卓獲取接入的Wifi熱點設備的Ip地址的代碼,需要的朋友可以參考下
    2018-01-01
  • Android三種網(wǎng)絡通訊方式及Android的網(wǎng)絡通訊機制

    Android三種網(wǎng)絡通訊方式及Android的網(wǎng)絡通訊機制

    在android平臺目前提供了三種網(wǎng)絡接口可以使用:分別是java.net.*(標準Java接口)、Org.apache接口和Android.net.*(Android網(wǎng)絡接口),本文主要給大家介紹android三種網(wǎng)絡通訊方式及android的網(wǎng)絡通訊機制,小伙伴們一起學習吧
    2015-11-11
  • Android實現(xiàn)音樂視頻播放

    Android實現(xiàn)音樂視頻播放

    這篇文章主要為大家詳細介紹了Android實現(xiàn)音樂視頻播放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 詳解Flutter如何完全自定義TabBar

    詳解Flutter如何完全自定義TabBar

    在App中TabBar形式交互是非常常見的,但是系統(tǒng)提供的的樣式大多數(shù)又不能滿足我們產(chǎn)品和UI的想法,本文記錄了在Flutter中如何實現(xiàn)自定義TabBar的一個思路和過程,需要的可以參考一下
    2022-04-04
  • Android TextView和ImageView簡單說明

    Android TextView和ImageView簡單說明

    Android TextView和ImageView簡單說明,需要的朋友可以參考一下
    2013-03-03
  • Flutter使用AnimatedOpacity實現(xiàn)圖片漸現(xiàn)動畫

    Flutter使用AnimatedOpacity實現(xiàn)圖片漸現(xiàn)動畫

    其實在Flutter中提供了一些封裝好的動畫組件,以便我們快速應用。本文將利用其中的AnimatedOpacity組件實現(xiàn)圖片漸現(xiàn)動畫效果,需要的可以參考一下
    2022-03-03

最新評論