1. 程式人生 > >自定義Drawable實現圓形影象

自定義Drawable實現圓形影象

CustomDrawable.java

package com.zhoujian.drawable.view;

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 zhoujian on 2016/12/9. */ public class CustomDrawable extends Drawable { private Paint mPaint; private int mWidth; private Bitmap mBitmap ; public CustomDrawable(Bitmap bitmap) { mBitmap = bitmap ; BitmapShader bitmapShader = new
BitmapShader(bitmap, 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(Canvas canvas) { canvas.drawCircle(mWidth / 2
, mWidth / 2, mWidth / 2, mPaint); } @Override public int getIntrinsicWidth() { return mWidth; } @Override public int getIntrinsicHeight() { return mWidth; } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } }

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">

    <ImageView
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:id="@+id/imgView"
        android:layout_width="300dp"
        android:layout_height="300dp"/>
</RelativeLayout>

MainActivity.java

package com.zhoujian.drawable.activity;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import com.zhoujian.drawable.R;
import com.zhoujian.drawable.view.CustomDrawable;

public class MainActivity extends AppCompatActivity
{

    private ImageView imgeview;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.imgeview);
        imgeview= (ImageView) findViewById(R.id.imgView);
        imgeview.setImageDrawable(new CustomDrawable(bitmap));
    }
}

效果圖:

這裡寫圖片描述

Drawable系列原始碼下載