Android使用shape制作圆形控件及添加弹跳动画
————————本来为作者原创,未经同意禁止转载
前言:我们在很多时候都需要在res/drawable文件夹下创建相应的xml文件来为控件添加一些样式效果,比如按钮按下时的按钮样式变化、或者指定按钮的一些边框样式、或者为常用的EditText、TextView、ImageView、ImageButton等等添加一些样式。今天我们就来讲下怎么制作圆形Button、圆形ImageView、圆形....等,并且使用Animation给它们添加弹跳动画。
我们就先讲一下shape标签的属性吧:
我们在xml新建一个shape属性的标签,shape标签的根属性shape属性是我们今天主讲的内容,
shape的根属性android:shape属性有这么几个固定的值,android:shape=["rectangle" | "oval" | "line" | "ring"]
shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)【注:需要把控件设置为什么样的形状时就需要自己设定这些值了,比如设置为圆形或者椭圆时需要把android:shape设置为android:shape="oval",其它形状的也是相应如此】
【注】: 下面的属性只有在android:shape="ring"时可用,即为环形:
android:innerRadius 尺寸,内环的半径。
android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
android:thickness 尺寸,环的厚度
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是3.
android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.
好了,知道了android:shape的几个属性,那么我们要把一个Button变成圆形形状的话,就需要设置android:shape="oval"了,这样才能变成我们需要的形状。
下面就直接贴代码了,xml文件:
<shape android:shape="oval"> <solid android:color="#b8c7e5" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> <stroke android:width="1dp" android:color="#ffffff" /> </shape>
其中solid是设置Button的背景色,padding是设置字体与Button边框的内部填充大小,stroke是设置Button的边框大小与颜色,其它的一些属性想了解的可以去查下有关资料。
Button布局文件:
<Button
android:id="@+id/bt_main_login"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/main_button_style"
android:layout_marginBottom="40dp"
android:text="登录"
android:textColor="#ffffff"
android:textSize="20sp" />
【特别需要注意】:我们光设置了android:shape="oval"并不能把Button设置为圆形,只是设置了该Button为椭圆形,需要设置为圆形的形状就需要把Button的宽度(layout_width)与长度(layout_height)设置为相等的值,因为如果是默认设置为包裹内容(wrap_content),这时候长宽就自然不相等了,就显示为椭圆形了,这点不难理解吧。
好了,这样的话我们把Button就设置成了圆形了。
我们先来看看效果吧:
嘿嘿,是不是成功了啊,省去了自定义控件的事了。
但是我说了还要添加弹跳动画效果啊,就是一打开页面就有这两个圆形的按钮像球一样弹跳的显示出来,那么怎么实现呢?答案就是要用到Animation和插值器了,直接上代码吧:
private void jump(){
TranslateAnimation down = new TranslateAnimation(0, 0, -300, 0);//位移动画,从button的上方300像素位置开始
down.setFillAfter(true);
down.setInterpolator(new BounceInterpolator());//弹跳动画,要其它效果的当然也可以设置为其它的值
down.setDuration(2000);//持续时间
mBtLogin.startAnimation(down);//设置按钮运行该动画效果
mBtRegister.startAnimation(down);//设置按钮运行该动画效果
}
是不是很简单啊,当然也可以在xml文件中设置动画了,然后在代码中用AnimationUtils.loadAnimation(context, id);加载该动画即可,我推荐就是用代码写吧,因为代码写起来好方便,构造函数中就可以把属性的值设置完。
那么我们就来看下动画效果吧
是不是ok了呀!!!
欢迎关注-------
Android使用shape制作圆形控件及添加弹跳动画的更多相关文章
- Android 使用shape定义不同控件的的颜色、背景色、边框色
Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...
- C# 制作ActiveX控件并添加到网页
1.创建ActiveX控件——按钮 2.定义一个接口,并在控件中实现 3.部署安装 4.CAB打包 5.添加到网页中进行测试 一. 创建ActiveX控件——按钮 1.新建一个Window窗体控件库项 ...
- Shape画圆形控件
这里涉及到shape的运用,这仅仅是一个实例 circle.xml <?xml version="1.0" encoding="utf-8"?> & ...
- Android开发之制作圆形头像自定义View,直接引用工具类,加快开发速度。带有源代码学习
作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 QQ986945193 博客园主页:http://www.cnblogs.com/mcxiaobing ...
- 自定义圆形控件 RoundImageView
1.自定义圆形控件 RoundImageView package com.ronye.CustomView; import android.content.Context; import androi ...
- 自定义圆形控件RoundImageView并认识一下attr.xml
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白,估计有的同学或者开发者看了说,这种方式多此一举,但是小编我不这么认为,多一种解决方式,就多一种举一反三的学 ...
- WPF--Blend制作Button控件模板
博客园新人,WPF初学者.不涉及理论知识,直接进入操作. 记录一下使用Blend制作Button控件模板过程中,学到Blend几个知识点: 1.渐变画笔编辑器的Alpha选项可以调控件的透明度.即下图 ...
- CircleImageView自定义圆形控件的使用
1.自定义圆形控件github地址: https://github.com/hdodenhof/CircleImageView 主要的类: package de.hdodenhof.circleima ...
- android - 自定义(组合)控件 + 自定义控件外观
转载:http://www.cnblogs.com/bill-joy/archive/2012/04/26/2471831.html android - 自定义(组合)控件 + 自定义控件外观 A ...
随机推荐
- Diango + uwsgi + nginx 项目部署(可外网访问)
自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 安装Nginx: #安装n ...
- [ZJOI2015]幻想乡战略游戏
Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...
- [HAOI2008]圆上的整点
题目描述 求一个给定的圆(x^2+y^2=r^2),在圆周上有多少个点的坐标是整数. 输入输出格式 输入格式: r 输出格式: 整点个数 输入输出样例 输入样例#1: 4 输出样例#1: 4 说明 n ...
- hdu 5392
Sample Input 2 3 1 3 2 6 2 3 4 5 6 1 Sample Output 2 6 题意:给一个转置求它的循环长度 题解:分解成循环求最小公倍数 #include< ...
- poj 3348 Cow 凸包面积
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8122 Accepted: 3674 Description ...
- hdu 5643 BestCoder Round #75
King's Game Accepts: 249 Submissions: 671 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 6 ...
- bzoj2005 NOI2010 方案统计
2005: [Noi2010]能量采集 Time Limit: 10 Sec Memory Limit: 552 MBSubmit: 4387 Solved: 2619[Submit][Statu ...
- 抽象方法不能是static或native或synchroniz
abstract 是抽象了,只有声明,没有具体的实现方法 static是静态的,是一种属于类而不属于对象的方法或者属性,而我们知道,类其实也是一个对象,他是在class文件加载到虚拟机以后就会产生的对 ...
- SpringCloud学习之zuul
一.为什么要有网关 我们先看一个图,如果按照consumer and server(最初的调用方式),如下所示 这样我们要面临如下问题: 1. 用户面临着一对N的问题既用户必须知道每个服务.随着服务的 ...
- Spring 自带的定时任务Scheduled
1.注解@Scheduled 可以作为一个触发源添加到一个方法中,例如,以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在上一个任务完成之后,5s后再次执 ...