91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android自定義Drawable實現圓角效果

發布時間:2020-09-30 15:28:43 來源:腳本之家 閱讀:157 作者:馬樂恒 欄目:移動開發

Drawable是一種可繪制資源的載體,如圖形、圖像等。在實際開發中可以作為view的背景。主要有靜態和動態兩種方式,靜態通過xml描述使用,動態即自定義Drawable。本文實現一個圓形和圓角的背景圖片效果。

效果圖:

Android自定義Drawable實現圓角效果

實現方式:

1.初始化一個BitmapShader著色器對象;
2.將著色器對象set給畫筆;
3.在畫布上繪制圓或圓角即可;
4.使用,view.setBackgroundDrawable
或者 ImageView.setImageDrawable

package com.mydrawable.musk;

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;

/**
 * Created by musk.
 */

public class CircleDrawable extends Drawable {

 private Paint mPaint;
 private int mWidth;
 private Bitmap mBitmap;

 public CircleDrawable(Bitmap bitmap) {
 mBitmap = bitmap;
 //著色器,設置橫向和縱向的著色模式為平鋪
 BitmapShader bitmapShader = new BitmapShader(mBitmap,
  Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);

 mPaint = new Paint();
 mPaint.setAntiAlias(true);
 mPaint.setDither(true);
 mPaint.setShader(bitmapShader);
 mWidth = Math.min(mBitmap.getWidth(), mBitmap.getHeight());
 }

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

 //設置透明度值
 @Override
 public void setAlpha(int alpha) {
 mPaint.setAlpha(alpha);
 }

 //設置顏色過濾器
 @Override
 public void setColorFilter(ColorFilter colorFilter) {
 mPaint.setColorFilter(colorFilter);
 }

 //返回不透明度
 @Override
 public int getOpacity() {
 return PixelFormat.TRANSLUCENT;
 }

 //返回圖片實際的寬高
 @Override
 public int getIntrinsicWidth() {
 return mWidth;
 }

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

自定義Drawable有五個方法必須覆寫,draw()、setAlpha()、setColorFilter()、getOpacity(),另外的getIntrinsicWidth()和getIntrinsicHeight()是在view設置wrap_content時設置drawable的寬度和高度。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长沙市| 苏州市| 马山县| 金沙县| 宁安市| 伊春市| 涿州市| 米林县| 汉中市| 宁德市| 静乐县| 资中县| 平原县| 阿拉尔市| 乡城县| 滦平县| 巴中市| 延庆县| 沙洋县| 合阳县| 曲周县| 双辽市| 岱山县| 沅江市| 罗定市| 四会市| 柘城县| 即墨市| 海阳市| 东宁县| 英吉沙县| 商南县| 普定县| 昭平县| 永城市| 新乡市| 大城县| 仁布县| 阜阳市| 榆林市| 金寨县|