Android 自定义布局控件-圆形RelativeLayout

转自“姜徕”,原文链接:https://blog.csdn.net/jiang001002jay/article/details/61418338

效果图 :

ææå¾

 

创建自定义类:CircleRelativeLayout.java

package com.jzy.circularlayout;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.RelativeLayout;public class CircleRelativeLayout extends RelativeLayout {    private int color;    private int[] colors;    private int alpha;    public CircleRelativeLayout(Context context) {        super(context);    }    public CircleRelativeLayout(Context context, AttributeSet attrs) {        super(context,attrs);        init(context,attrs);        setWillNotDraw(false);    }    private void init(Context context, AttributeSet attrs) {        TypedArray array = context.obtainStyledAttributes(attrs,                R.styleable.CircleRelativeLayoutLayout);        color = array.getColor(R.styleable.CircleRelativeLayoutLayout_background_color,0X0000000);        alpha = array.getInteger(R.styleable.CircleRelativeLayoutLayout_background_alpha,100);        setColors();        array.recycle();    }    @Override    protected void onDraw(Canvas canvas) { //构建圆形        int width = getMeasuredWidth();        Paint mPaint = new Paint();        mPaint.setARGB(alpha,colors[0],colors[1],colors[2]);        mPaint.setAntiAlias(true);        float cirX = width / 2;        float cirY = width / 2;        float radius = width / 2;        canvas.drawCircle(cirX, cirY, radius, mPaint);        super.onDraw(canvas);    }    public void setColor(int color) { //设置背景色        this.color = color;        setColors();        invalidate();    }    public void setAlhpa(int alhpa) { //设置透明度        this.alpha = alhpa;        invalidate();    }    public void setColors() {        int red = (color & 0xff0000) >> 16;        int green = (color & 0x00ff00) >> 8;        int blue = (color & 0x0000ff);        this.colors = new int[]{red,green,blue};    }}
  • 添加自定义属性 values/attr.xml
    <?xml version="1.0" encoding="utf-8"?>                        

     

  • 布局文件
    <?xml version="1.0" encoding="utf-8"?>                                                

 

  • 获取和设置控件
    public class MainActivity extends Activity {    CircleRelativeLayout crlayout;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        crlayout = (CircleRelativeLayout) findViewById(R.id.crlayout);        crlayout.setColor(getResources().getColor(R.color.colorAccent));        crlayout.setAlhpa(160);    }}

 

更多相关文章

  1. Android中在Button控件上显示倒计时
  2. Android SwipeMenuRecyclerView控件的用法
  3. Android软键盘遮挡布局的那些事
  4. Android中将布局文件/View添加至窗口过程分析 ---- 从setContent
  5. 自定义控件:滑动开关按钮
  6. android九宫格锁屏控件
  7. 自定义控件:瀑布流水字母
  8. 修改Android中Layout布局文件字体的大小
  9. android圆形有边框无背景色

随机推荐

  1. Android onClick事件三种实现方法
  2. android 返回主菜单 Home
  3. android 简单的音乐播放
  4. Android手机开发:将按钮置于底部
  5. Android之Intent
  6. Camera驱动开发 - 基于高通MSM8660 + And
  7. android仓库 用到的网址。
  8. 【Android Studio】Resource Shrinking去
  9. Android(Java):AlarmService
  10. Android文件下载进度条的实现