时间:2021-05-20
本文实例讲述了Android开发基于Drawable实现圆角矩形的方法。分享给大家供大家参考,具体如下:
第一步:写个类继承drawable,重写里面的方法,实现的核心代码在draw里
关键技术:BitmapShader
public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY)
调用这个方法来产生一个画有一个位图的渲染器(Shader)。
bitmap 在渲染器内使用的位图
tileX The tiling mode for x to draw the bitmap in. 在位图上X方向渲染器平铺模式
tileY The tiling mode for y to draw the bitmap in. 在位图上Y方向渲染器平铺模式
TileMode:
CLAMP :如果渲染器超出原始边界范围,会复制范围内边缘染色。
REPEAT :横向和纵向的重复渲染器图片,平铺。
MIRROR :横向和纵向的重复渲染器图片,这个和REPEAT重复方式不一样,他是以镜像方式平铺。
第二步:实现类
public class RoundActivity extends Activity { private ImageView mImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_round_drawable); setContentView(R.layout.activity_round_drawable); mImageView = (ImageView) findViewById(R.id.iv_round); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.aa); RoundImageDrawable drawable = new RoundImageDrawable(bitmap); drawable.setRound(30); mImageView.setImageDrawable(drawable); }}activity_round_drawable.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/iv_round" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitXY" /></LinearLayout>绘制圆形图片
核心代码:
mWidth = Math.min(bitmap.getWidth(), bitmap.getHeight());canvas.drawCircle(mWidth / 2, mWidth / 2, mRadius, mPaint);/** * 圆形 * @Project App_View * @Package com.android.view.drawable * @author chenlin * @version 1.0 * @Note TODO */public class CircleImageDrawable extends Drawable { private Bitmap mBitmap; private Paint mPaint; private int mWidth; private int mRadius; public CircleImageDrawable(Bitmap bitmap){ this.mBitmap = bitmap; mPaint.setAntiAlias(true); BitmapShader shader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP); mPaint.setShader(shader); mWidth = Math.min(bitmap.getWidth(), bitmap.getHeight()); mRadius = mWidth / 2; } /** * 核心代码 */ @Override public void draw(Canvas canvas) { canvas.drawCircle(mWidth / 2, mWidth / 2, mRadius, mPaint); } /** * getIntrinsicWidth、getIntrinsicHeight主要是为了在View使用wrap_content的时候, * 提供一下尺寸,默认为-1可不是我们希望的 */ @Override public int getIntrinsicHeight() { return mWidth; } @Override public int getIntrinsicWidth() { 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; }}更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》、《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》
希望本文所述对大家Android程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了Android开发圆角Button按钮实现过程,分享给大家供大家参考,具体内容如下需求及效果图:实现思路:1、shape实现圆角在drawable
本文实例讲述了Android开发实现的圆角按钮、文字阴影按钮效果。分享给大家供大家参考,具体如下:效果图:如果要实现圆角图片,并变色须在drawable中配置背
本文实例讲述了Android编程实现圆角边框的方法。分享给大家供大家参考,具体如下:设置边框圆角可以在drawable-mdpi目录里定义一个xml:解释:so
Android中有哪些可以切圆角的实现方式呢?本文总结一下常用的方式。以下内容分为以下几部分:利用Drawable的shapexml实现CardView实现圆角
本文实例讲述了Android编程实现带渐变效果的圆角矩形。分享给大家供大家参考,具体如下:/***带渐变色效果的圆角矩形**@description:*@aut