国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android開發(fā)之圓角矩形創(chuàng)建工具RoundRect類定義與用法分析

2019-12-12 01:18:06
字體:
供稿:網(wǎng)友

本文實例講述了Android開發(fā)之圓角矩形創(chuàng)建工具RoundRect類。分享給大家供大家參考,具體如下:

用于把普通圖片轉(zhuǎn)換為圓角圖像的工具類RoundRect類(復(fù)制即可使用):

RoundRect.java

import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.RectF;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;public class RoundRect {  private int width;  private int height;  private float cornerRadius;  /**   * 用于初始化圓角矩形基本參數(shù)   *   * @param width    圖片寬度   * @param height    圖片高度   * @param cornerRadius 圓角半徑   */  public RoundRect(int width, int height, float cornerRadius) {    this.width = width;    this.height = height;    this.cornerRadius = cornerRadius;  }  /**   * 用于把普通圖片轉(zhuǎn)換為圓角矩形圖像   *   * @param path 圖片路徑   * @return output 轉(zhuǎn)換后的圓角矩形圖像   */  Bitmap toRoundRect(String path) {    //創(chuàng)建位圖對象    Bitmap photo = lessenUriImage(path);    return Transformation(photo);  }  /**   * 用于把普通圖片轉(zhuǎn)換為圓角矩形圖像   *   * @param imageID 圖片資源ID   * @param context 上下文對象   * @return output 轉(zhuǎn)換后的圓角矩形圖像   */  Bitmap toRoundRect(Context context, int imageID) {    //創(chuàng)建位圖對象    Bitmap photo = BitmapFactory.decodeResource(context.getResources(), imageID);    return Transformation(photo);  }  /**   * 用于把Uri圖片轉(zhuǎn)換為Bitmap對象   *   * @param path 圖片URI地址   * @return 生成的Bitmap對象   */  public final static Bitmap lessenUriImage(String path) {    BitmapFactory.Options options = new BitmapFactory.Options();    options.inJustDecodeBounds = true;    Bitmap bitmap = BitmapFactory.decodeFile(path, options); //此時返回 bm 為空    options.inJustDecodeBounds = false; //縮放比。由于是固定比例縮放,只用高或者寬其中一個數(shù)據(jù)進行計算即可    int be = (int) (options.outHeight / (float) 320);    if (be <= 0) be = 1;    options.inSampleSize = be; //重新讀入圖片,注意此時已經(jīng)把 options.inJustDecodeBounds 設(shè)回 false 了    bitmap = BitmapFactory.decodeFile(path, options);    int w = bitmap.getWidth();    int h = bitmap.getHeight();    System.out.println(w + " " + h); //after zoom    return bitmap;  }  /**   * 用于把Bitmap圖像轉(zhuǎn)換為圓角圖像   *   * @param photo 需要轉(zhuǎn)換的Bitmap對象   * @return 轉(zhuǎn)換成圓角的Bitmap對象   */  private Bitmap Transformation(Bitmap photo) {    //根據(jù)源文件新建一個darwable對象    Drawable imageDrawable = new BitmapDrawable(photo);    // 新建一個新的輸出圖片    Bitmap output = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(output);    // 新建一個矩形    RectF outerRect = new RectF(0, 0, width, height);    // 產(chǎn)生一個紅色的圓角矩形    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);    paint.setColor(Color.RED);    canvas.drawRoundRect(outerRect, cornerRadius, cornerRadius, paint);    // 將源圖片繪制到這個圓角矩形上    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));    imageDrawable.setBounds(0, 0, width, height);    canvas.saveLayer(outerRect, paint, Canvas.ALL_SAVE_FLAG);    imageDrawable.draw(canvas);    canvas.restore();    return output;  }}

測試效果:

創(chuàng)建矩形圖標:

public class MainActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.image);    ImageView image = (ImageView)findViewById(R.id.image);    RoundRect roundRect = new RoundRect(500,500,100);    Bitmap photo = roundRect.toRoundRect(this,R.drawable.kms);    image.setImageBitmap(photo);  }}

創(chuàng)建圓形頭像:

public class MainActivity extends Activity {  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.image);    ImageView image = (ImageView)findViewById(R.id.image);    RoundRect roundRect = new RoundRect(500,500,300);    Bitmap photo = roundRect.toRoundRect(this,R.drawable.indark);    image.setImageBitmap(photo);  }}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android開發(fā)入門與進階教程》、《Android視圖View技巧總結(jié)》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android數(shù)據(jù)庫操作技巧總結(jié)》及《Android資源操作技巧匯總

希望本文所述對大家Android程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 四川省| 西安市| 从江县| 巫山县| 蛟河市| 常宁市| 政和县| 苏尼特右旗| 宁津县| 邻水| 册亨县| 都匀市| 宜阳县| 白水县| 金塔县| 伊吾县| 枝江市| 浑源县| 秦皇岛市| 宾川县| 南阳市| 三河市| 龙口市| 汉阴县| 扎兰屯市| 崇州市| 玉林市| 富蕴县| 成安县| 阳原县| 积石山| 海晏县| 锦屏县| 新干县| 东阳市| 泸水县| 喀喇| 福鼎市| 繁昌县| 稻城县| 天镇县|