Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android編程繪制圓形圖片的方法

Android編程繪制圓形圖片的方法

編輯:關於Android編程

本文實例講述了Android編程繪制圓形圖片的方法。分享給大家供大家參考,具體如下:

效果圖如下:

第一步:新建RoundView自定義控件繼承View

package com.rong.activity;
import com.rong.test.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
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.util.AttributeSet;
import android.widget.ImageView;
/**
 * 利用Xfermode制作一個圓形圖片
 * 
 * @author 徐榮
 *
 */
public class RoundView extends ImageView {
  /**
   * 畫筆
   */
  private Paint mPaint;
  /**
   * 原型圖
   */
  private Bitmap src;
  /**
   * 遮罩層
   */
  private Bitmap mask;
  public RoundView(Context context, AttributeSet attrs) {
    super(context, attrs);
    // 初始化畫筆
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    // 拿到原型圖
    src = BitmapFactory.decodeResource(getResources(), R.drawable.ml);
  }
  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    // 圖片的遮罩,為什麼要在這裡面初始化遮罩層呢?因為在這個方法裡Width()和Height()才被初始化了
    mask = Bitmap.createBitmap(getMeasuredWidth(), getMeasuredHeight(), Config.ARGB_4444);
  }
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // 設置畫布的顏色為透明
    canvas.drawColor(Color.TRANSPARENT);
    // 劃出你要顯示的圓
    Canvas cc = new Canvas(mask);
    cc.drawCircle(getMeasuredWidth() / 2, getMeasuredHeight() / 2, getMeasuredHeight() / 2, mPaint);
    // 這個方法相當於PS新建圖層,下面你要做的事就在這個圖層上操作
    canvas.saveLayer(0, 0, getMeasuredWidth(), getMeasuredHeight(), null, Canvas.ALL_SAVE_FLAG);
    // 先繪制遮罩層
    canvas.drawBitmap(mask, 0, 0, mPaint);
    // 設置混合模式
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
    // 再繪制src源圖
    canvas.drawBitmap(src, 0, 0, mPaint);
    // 還原混合模式
    mPaint.setXfermode(null);
    // 還原畫布,相當於Ps的合並圖層
    canvas.restore();
  }
}

第二步 新建布局文件Activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#ffffff"
  android:orientation="vertical" >
  <com.rong.activity.RoundView
    android:layout_width="160dp"
    android:layout_height="160dp"
    android:layout_centerInParent="true" />
</RelativeLayout>

運行!

更多關於Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》

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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved