• 三种自定义圆形按钮的方法


    占坑

    1、自定义的view,在onDraw方法里用canvas绘制一个圆。

    2、用ImageButton,然后背景传入一个圆形的图片。

    3、用shape编写形状,button里指定shape。

    只有方法3能有点击的阴影效果,方法1和2看不出点击效果

    一:自定义view

    画了圆之外,其实整个控件还是矩形的,必须让背景透明

    public class CircleView extends Button {
    
        int mColor = Color.GRAY;
    
        Paint paint;
    
        private void init(){
    
            paint = new Paint();
            paint.setColor(mColor);
    
        }
    
        public CircleView(Context context) {
            super(context);
            init();
    
        }
    
        public CircleView(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public CircleView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init();
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
    
            int width = getWidth();
            int height = getHeight();
            int radius = Math.min(width,height)/2;
            canvas.drawCircle(width/2,height/2,radius,paint);
    
        }
    
    
    
    }
    

    二:放入圆形的背景图即可,这里不展开说了

    三:编写shape文件

    <?xml version="1.0" encoding="utf-8"?>
    
    <shape
    
        xmlns:android= "http://schemas.android.com/apk/res/android"
    
        android:shape= "oval"椭圆
    
        android:useLevel= "false" >
    
        <solid android:color= "#CC0000" />颜色
    
    
    
        <size android:width= "20dp"
    
            android:height= "20dp" />
    
    </shape>
    

    整个布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.administrator.circletest.MainActivity">
    
        <com.example.administrator.circletest.CircleView
            android:background="#00000000"透明
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:id="@+id/view" />
    
        
    
    
        <ImageButton
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/back"
            android:id="@+id/imageButton"
            android:layout_alignTop="@+id/view"
            android:layout_centerHorizontal="true" />
    
    
        <Button
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/circle"
            android:layout_alignTop="@+id/imageButton"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true" />
    
    </RelativeLayout>
    

  • 相关阅读:
    poj2411
    poj2403
    poj2479
    poj2593
    跟着B站UP主小姐姐去华为坂田基地采访扫地僧
    云小课 | 不小心删除了数据库,除了跑路还能咋办?
    GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用
    华为侯金龙:打造行业智能体,共建全场景智慧
    华为轮值董事长郭平2020全联接大会主题演讲:永远面向阳光,阴影甩在身后
    【API进阶之路】太秃然了,老板要我一周内检测并导入一万个小时的视频
  • 原文地址:https://www.cnblogs.com/wzben/p/6115692.html
Copyright © 2020-2023  润新知