首页 > 其他 > 详细

自定义Drawable

时间:2019-01-04 17:02:35      阅读:197      评论:0      收藏:0      [点我收藏+]
package com.loaderman.customviewdemo;

import android.graphics.*;
import android.graphics.drawable.Drawable;


public class CustomDrawable extends Drawable {
    private Paint mPaint;
    private Bitmap mBitmap;
    private BitmapShader bitmapShader;
    private RectF mBound;

    public CustomDrawable(Bitmap bitmap) {
        mBitmap = bitmap;
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
    }

    @Override
    public void draw(Canvas canvas) {
        canvas.drawRoundRect(mBound, 20, 20, mPaint);
    }


    @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;//显示模式
    }

    @Override
    public void setBounds(int left, int top, int right, int bottom) {
        super.setBounds(left, top, right, bottom);

        bitmapShader = new BitmapShader(Bitmap.createScaledBitmap(mBitmap, right - left, bottom - top, true), Shader.TileMode.CLAMP,
                Shader.TileMode.CLAMP);
        mPaint.setShader(bitmapShader);
        mBound = new RectF(left, top, right, bottom);
    }

//    @Override
//    public int getIntrinsicWidth() {
//        return mBitmap.getWidth();
//    }
//
//    @Override
//    public int getIntrinsicHeight() {
//        return mBitmap.getHeight();
//    }
}
package com.loaderman.customviewdemo;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity  {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.avator);
        CustomDrawable drawable = new CustomDrawable(bitmap);
        TextView tv = (TextView) findViewById(R.id.tv);
        tv.setBackgroundDrawable(drawable);
    }
}

技术分享图片

自定义Drawable

原文:https://www.cnblogs.com/loaderman/p/10220567.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!