国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

android實(shí)現(xiàn)圓角矩形背景的方法

2020-04-11 11:23:54
字體:
供稿:網(wǎng)友

本文實(shí)例講述了android實(shí)現(xiàn)圓角矩形背景的方法。分享給大家供大家參考。具體如下:

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程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖州市| 金溪县| 从化市| 辽中县| 奉化市| 新平| 柞水县| 阿克陶县| 营山县| 错那县| 新化县| 通海县| 高密市| 华亭县| 科技| 酉阳| 侯马市| 车险| 新竹县| 夏河县| 井陉县| 宁强县| 遂川县| 台东县| 远安县| 台北县| 库伦旗| 南漳县| 海丰县| 隆德县| 灵石县| 滕州市| 固始县| 上栗县| 山丹县| 宜章县| 林甸县| 钟山县| 柏乡县| 秦皇岛市| 钟祥市|