本文实例讲述了android实现圆角矩形背景的方法。分享给大家供大家参考。具体如下:
1. java代码如下:
import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.shapes.RoundRectShape; import android.view.MotionEvent; public class RoundRectDradable extends Drawable{ private static final float DEFAULT_RADIUS = 6.f; private Paint mPaint = new Paint(); private RoundRectShape mShape; private float[] mOuter; private int mColor; private int mPressColor; private float mTopLeftRadius = DEFAULT_RADIUS; private float mTopRightRadius = DEFAULT_RADIUS; private float mBottomLeftRadius = DEFAULT_RADIUS; private float mBottomRightRadius = DEFAULT_RADIUS; public RoundRectDradable() { mColor = Color.WHITE; mPressColor = Color.WHITE; mPaint.setColor(mColor); mPaint.setAntiAlias(true); } public float getTopLeftRadius() { return mTopLeftRadius; } public void setTopLeftRadius(float topLeftRadius) { this.mTopLeftRadius = topLeftRadius; } public float getTopRightRadius() { return mTopRightRadius; } public void setTopRightRadius(float topRightRadius) { this.mTopRightRadius = topRightRadius; } public float getBottomLeftRadius() { return mBottomLeftRadius; } public void setBottomLeftRadius(float bottomLeftRadius) { this.mBottomLeftRadius = bottomLeftRadius; } public float getBottomRightRadius() { return mBottomRightRadius; } public void setBottomRightRadius(float bottomRightRadius) { this.mBottomRightRadius = bottomRightRadius; } public int getPressColor() { return mPressColor; } public void setPressColor(int pressColor) { this.mPressColor = pressColor; } @Override protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); refreshShape(); mShape.resize(bounds.right - bounds.left, bounds.bottom - bounds.top); } private void refreshShape(){ mOuter = new float[]{mTopLeftRadius, mTopLeftRadius , mTopRightRadius, mTopRightRadius , mBottomLeftRadius, mBottomLeftRadius , mBottomRightRadius, mBottomLeftRadius}; mShape = new RoundRectShape(mOuter, null, null); } public void setColor(int color){ mColor = color; mPaint.setColor(color); } @Override public void draw(Canvas canvas) { mShape.draw(canvas, mPaint); } @Override public void setAlpha(int alpha) { mPaint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { mPaint.setColorFilter(cf); } @Override public int getOpacity() { return mPaint.getAlpha(); } }
2. java代码如下:
import android.graphics.Rect; import android.graphics.drawable.StateListDrawable; public class StateRoundRectDrawable extends StateListDrawable{ private static final float DEFAULT_RADIUS = 6.f; private float mTopLeftRadius = DEFAULT_RADIUS; private float mTopRightRadius = DEFAULT_RADIUS; private float mBottomLeftRadius = DEFAULT_RADIUS; private float mBottomRightRadius = DEFAULT_RADIUS; private int mNormalColor; private int mPressedColor; private RoundRectDradable mNormalDradable; private RoundRectDradable mPressedDradable; public StateRoundRectDrawable(int normalCorlor, int pressColor) { this.mNormalColor = normalCorlor; this.mPressedColor = pressColor; } @Override protected void onBoundsChange(Rect bounds) { if(mNormalDradable == null){ mNormalDradable = new RoundRectDradable(); mNormalDradable.setTopLeftRadius(mTopLeftRadius); mNormalDradable.setTopRightRadius(mTopRightRadius); mNormalDradable.setBottomLeftRadius(mBottomLeftRadius); mNormalDradable.setBottomRightRadius(mBottomRightRadius); mNormalDradable.setColor(mNormalColor); mNormalDradable.onBoundsChange(bounds); } if(mPressedDradable == null){ mPressedDradable = new RoundRectDradable(); mPressedDradable.setTopLeftRadius(mTopLeftRadius); mPressedDradable.setTopRightRadius(mTopRightRadius); mPressedDradable.setBottomLeftRadius(mBottomLeftRadius); mPressedDradable.setBottomRightRadius(mBottomRightRadius); mPressedDradable.setColor(mPressedColor); mPressedDradable.onBoundsChange(bounds); } this.addState(new int[]{-android.R.attr.state_pressed}, mNormalDradable); this.addState(new int[]{android.R.attr.state_pressed}, mPressedDradable); } public float getTopLeftRadius() { return mTopLeftRadius; } public void setTopLeftRadius(float topLeftRadius) { this.mTopLeftRadius = topLeftRadius; } public float getTopRightRadius() { return mTopRightRadius; } public void setTopRightRadius(float topRightRadius) { this.mTopRightRadius = topRightRadius; } public float getBottomLeftRadius() { return mBottomLeftRadius; } public void setBottomLeftRadius(float bottomLeftRadius) { this.mBottomLeftRadius = bottomLeftRadius; } public float getBottomRightRadius() { return mBottomRightRadius; } public void setBottomRightRadius(float bottomRightRadius) { this.mBottomRightRadius = bottomRightRadius; } public int getNormalColor() { return mNormalColor; } public void setNormalColor(int normalColor) { this.mNormalColor = normalColor; } public int getPressedColor() { return mPressedColor; } public void setPressedColor(int pressedColor) { this.mPressedColor = pressedColor; } }
希望本文所述对大家的Android程序设计有所帮助。
本文向大家介绍Android实现圆角矩形和圆形ImageView的方式,包括了Android实现圆角矩形和圆形ImageView的方式的使用技巧和注意事项,需要的朋友参考一下 Android中实现圆角矩形和圆形有很多种方式,其中最常见的方法有ImageLoader设置Option和自定义View。 1.ImageLoader加载图片 ImageLoader.getInstance().displa
本文向大家介绍Android实现空心圆角矩形按钮的实例代码,包括了Android实现空心圆角矩形按钮的实例代码的使用技巧和注意事项,需要的朋友参考一下 页面上有时会用到背景为空心圆角矩形的Button,可以通过xml绘制出来。 drawrable文件夹下bg_red_hollow_rectangle.xml shape:图形,rectangle为矩形; stoke:描边 solid:填充 corn
本文向大家介绍Android中TextView显示圆圈背景或设置圆角的方法,包括了Android中TextView显示圆圈背景或设置圆角的方法的使用技巧和注意事项,需要的朋友参考一下 前言 在我们学习android这么久,而且使用TextView那么长时间,我们一直没有用过给TextView添加背景,或者是给TextView添加添加边框,以及怎么样设置TextView的形状。今天在写代码的时候就用
本文向大家介绍Android实现自定义ImageView的圆角矩形图片效果,包括了Android实现自定义ImageView的圆角矩形图片效果的使用技巧和注意事项,需要的朋友参考一下 android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪对
本文向大家介绍iOS实现圆角箭头矩形的提示框,包括了iOS实现圆角箭头矩形的提示框的使用技巧和注意事项,需要的朋友参考一下 先来看看我们见过的一些圆角箭头矩形的提示框效果图 一、了解CGContextRef 首先需要对 CGContextRef 了解, 作者有机会再进行下详细讲解, 这篇中简单介绍下, 方便后文阅读理解. 先了解 CGContextRef 坐标系 坐标系 举例说明 : 对于 商城类
本文向大家介绍php实现背景图上添加圆形logo图标的方法,包括了php实现背景图上添加圆形logo图标的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现背景图上添加圆形logo图标的方法。分享给大家供大家参考,具体如下: 说一下步骤: 总共分 3 步: 1. 压缩logo 成固定大小的方形图片 2. 将logo 转成圆形logo 3. 将logo与背景图合并 废话不多说,直
本文向大家介绍Android实现圆形图片或者圆角图片,包括了Android实现圆形图片或者圆角图片的使用技巧和注意事项,需要的朋友参考一下 Android圆形图片或者圆角图片的快速实现,具体内容如下 话不多说直接上code xml文件布局 初始化控件之后用工具类加载 //第一个参数上下文,第二个控件名称,第三个图片url地址,第四个参数圆角大小 ViewUtils.loadImageRadius(
本文向大家介绍Android自定义控件之圆形/圆角的实现代码,包括了Android自定义控件之圆形/圆角的实现代码的使用技巧和注意事项,需要的朋友参考一下 一、问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的: 二、怎么搞? 机智的我,第一想法就是,切一张中间圆形透明、四周与底色相同、尺寸与头像相同的蒙板图片,盖在头像上不就完事了嘛,哈哈哈! 在背景纯色的前提下,这的