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

摘要:
privatevoidinit(){paint=newPaint();}publicCircleView(Contextcontext){super(context);}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(画布);intwidth=getWidth();intheight=getHeight();

占坑

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: 

        android:  />

</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:  />

    


    <ImageButton
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/back"
        android: 
        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>

三种自定义圆形按钮的方法第1张三种自定义圆形按钮的方法第2张

免责声明:文章转载自《三种自定义圆形按钮的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇利用 ssh 的用户配置文件 config 管理 ssh 会话Hbase介绍及操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Golang的标准命令简述

            Golang的标准命令简述                               作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。     Go本身包含了大量用于处理Go程序的命令和工具。go命令就是其中最常见的一个,它有许多子命令,接下来就跟随博主一起了解一下吧~   一.go build   1>.g...

Mybatis自动生成Xml文件,针对字段类型为text等会默认产生XXXXWithBlobs的方法问题

默认情况下产生的Mapper.xml里面存在: 需要修改generatorConfiguration.xml,里面的table加属性,如: <table domainObjectName="User" tableName="test_user"> <columnOverride column="address" javaTyp...

WPF 实现已绑定集合项目的移除时动画过渡

信不信由你,这个场景貌似没有官方的完美解决方案。我认为这个要求一点都不过分,花了很长时间 bai google du,就是没找到好的方案。这是我花了一天时间才搞通的一个方案,跟大家分享,虽然仍然不太完美,但是希望对大家有用。 对完美的憧憬 一个已绑定到 ItemsControl 的集合,是不能通过 ItemsControl.Items 属性来访问的,如果你...

vue的学习总结---事件处理

v-on的理解 监听DOM元素的事件,并在触发时执行一些js代码 <template> <div> <!-- v-on监听DOM事件,并在触发时做一些js的操作,如下代码可以将js操作直接放在事件中 --> <button v-on:click="num++">点击按钮+1</but...

Xcode开发 字符串用法

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值。而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度。 1.创建经典的NSString字符串 NSString...

linux makefile字符串操作函数 替换subst、模式替换patsubst、去首尾空格strip、查找字符串findstring、过滤filter、反过滤filter-out、排序函数sort、取单词word、取单词串wordlist、个数统计words

1.1       字符操作函数使用 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:$(<function> <arguments&g...