博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
setShadpwLayer实现阴影效果
阅读量:4332 次
发布时间:2019-06-06

本文共 3284 字,大约阅读时间需要 10 分钟。

package com.loaderman.customviewdemo;import android.content.Context;import android.graphics.*;import android.util.AttributeSet;import android.view.View;public class ShadowLayerView extends View {    private Paint mPaint = new Paint();    private Bitmap mDogBmp;    private int mRadius = 1, mDx = 10, mDy = 10;    private boolean mSetShadow = true;    public ShadowLayerView(Context context) {        super(context);        init();    }    public ShadowLayerView(Context context, AttributeSet attrs) {        super(context, attrs);        init();    }    public ShadowLayerView(Context context, AttributeSet attrs, int defStyle) {        super(context, attrs, defStyle);        init();    }    private void init() {        setLayerType(LAYER_TYPE_SOFTWARE, null);        mPaint.setColor(Color.BLACK);        mPaint.setTextSize(25);        mDogBmp = BitmapFactory.decodeResource(getResources(), R.drawable.dog);    }    public void changeRadius() {        mRadius++;        postInvalidate();    }    public void changeDx() {        mDx += 5;        postInvalidate();    }    public void changeDy() {        mDy += 5;        postInvalidate();    }    public void setShadow(boolean showShadow) {        mSetShadow = showShadow;        postInvalidate();    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        canvas.drawColor(Color.WHITE);        if (mSetShadow) {            mPaint.setShadowLayer(mRadius, mDx, mDy, Color.GRAY);        } else {            mPaint.clearShadowLayer();        }        canvas.drawText("启舰", 100, 100, mPaint);        canvas.drawCircle(200, 200, 50, mPaint);        canvas.drawBitmap(mDogBmp, null, new Rect(200, 300, 200 + mDogBmp.getWidth(), 300 + mDogBmp.getHeight()), mPaint);    }}
package com.loaderman.customviewdemo;import android.app.Activity;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity  implements View.OnClickListener{    private ShadowLayerView mShadowLayerView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mShadowLayerView = (ShadowLayerView)findViewById(R.id.shadowlayerview);        findViewById(R.id.radius_btn).setOnClickListener(this);        findViewById(R.id.dx_btn).setOnClickListener(this);        findViewById(R.id.dy_btn).setOnClickListener(this);        findViewById(R.id.clear_btn).setOnClickListener(this);        findViewById(R.id.show_btn).setOnClickListener(this);    }    public void onClick(View v) {        switch (v.getId()){            case R.id.radius_btn:                mShadowLayerView.changeRadius();                break;            case R.id.dx_btn:                mShadowLayerView.changeDx();;                break;            case R.id.dy_btn:                mShadowLayerView.changeDy();                break;            case R.id.clear_btn:                mShadowLayerView.setShadow(false);                break;            case R.id.show_btn:                mShadowLayerView.setShadow(true);                break;        }    }}

效果:


 

setShadowLayer(float radius, float dx, float dy, int shadowColor)
radius 模糊半径 dx和dy偏移距离 shadowColor绘制阴影的画笔颜色,对图片无效

转载于:https://www.cnblogs.com/loaderman/p/10212648.html

你可能感兴趣的文章
小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_汇总
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-06 服务注册和发现之Eureka Client搭建商品服务实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-03 高级篇幅之Ribbon负载均衡源码分析实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-06 Feign核心源码解读和服务调用方式ribbon和Feign选择...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-02 Netflix开源组件断路器
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-01分布式核心知识之熔断、降级
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-04 feign结合hystrix断路器开发实战下...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_5-03 feign结合hystrix断路器开发实战上...
查看>>