Android笔记——Android自定义控件,android自定义控件
目录:
1.自定义控件概述
01_什么是自定义控件
Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果。
02_为什么用自定义控件
系统控件无法满足需求时,需要自定义控件。
03_怎么用自定义控件-三种方式
1.使用系统控件,重新组合,实现自定义的效果,案例有:
优酷环形菜单、广告条循环滚动(Viewpager)、下拉菜单(spinner)、下拉框(PopupWindow、ListView)
2.自己定义一个类继承View ,实现特定的效果,案例有:
自定义开关按钮、水波纹效果
3.自己定义一个类继承ViewGroup,实现特定的效果,案例有:
仿ViewPager的效果实现 、 仿网易侧滑菜单
4.自定义属性:给自己的控件,添加自己的属性,通过demo了解系统解析属性的过程,
并给上一个例子开关按钮,添加新属性。
04_Android常用控件回顾
Android本身提供了很多控件,如:
文本控件 TextView和EditText;
图片控件 ImageView
按钮控件 Button和ImageButton
进度条 ProgressBar
单选按钮 RadioButton和RadioGroup
复选按钮 CheckBox
状态开关按钮ToggleButton
时钟控件 AnalogClock和DigitalClock
日期与时间选择控件DatePicker和TimePicker等。
. . .
使用原则:尽量使用系统的控件,在系统控件没法达到我们的需求的时候才需要自定义控件。再定义控件会带来工作量,例如修改bug.
文本控件TextView 和EditText
TextView 控件继承自 View 类。TextView控件的功能是向用户显示文本内容,TextView不允许编辑。
EditText控件继承自 TextView。EditText与TextView 最大的不同是 EditText是可以编辑的
图片控件ImageView
ImageView 控件负责显示图片,其图片来源既可以是资源文件的id,也可以是Drawable对象或 Bitmap 对象,还可以是 内容提供者(Content Provider)的Uri.
按钮控件Button 和 ImageButton
Button控件继承自 TextView 类,Button 的用法比较简单,主要是为 Button 设置一个点击事件监听器,并在编写按钮点击事件的处理代码。
ImageButton 控件 继承自 ImageView。
ImageButton与Button相同之处:都用于响应按钮的点击事件
不同之处:ImageButton只能显示图片;Button用于显示文字
进度条ProgressBar
ProgressBar继承自 View,用于显示正在运行的状态。有两种显示形式:一种是环形显示只用于显示状态,没有具体的进度。第二种是水平显示,可以显示具体 的进度。
通过设置不同的Style显示不同的样式:
style="?android:attr/progressBarStyleLarge" 环形样式
style="?android:attr/progressBarStyleHorizontal" 水平样式
单选按钮 RadioButton 和复选按钮 CheckBox
CheckBox 和RadioButton 都继承自CompoundButton,都只有选中和未选中两种状态,可以通过checked属性来设置。
不同的是RadioButton 是单选按钮,在一个RadioGroup中只能有一个RadioButton按钮处于选中状态;CheckBox 则可以有多个按钮被选中。
状态开关按钮ToggleButton
ToggleButton 控件是继承自 CompoundButton。ToggleButton 的状态只能是选中和未选中,并且需要为不同的状态设置不同的显示文本。除了继承自父类的一 些属性和方法之外,ToggleButton 也具有一些自己的属性。
时钟控件AnalogClock 和 DigitalClock
AnalogClock继承自 View,用于显示模拟时钟只显示时针和分针。
DigeitalClock 继承自 TextView。用于显示数字时钟可精确到秒。 时钟控件比较简单,只需要在布局文件中声明控件即可。
日期选择器 DatePicker 和时间选择器 TimePicker
DatePicker 继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年、月、日的日期数据,并允许用户对其修改。如果要捕获这个修改,可以 为 DatePicker添加 onDateChangedListener 监听器。
TimePicker 同样继承自FrameLayout 类。时间选择控件向用户显示一天中的时间,可以为24小时制,可以为AM/PM 制,并允许用户进行修改。如果要捕获用 户的修改事件,需要为TimePicker 添加OnTimeChangedListener 监听器
知识链接:
android WheelView组件(滑轮组件)的使用 : http://www.myexception.cn/android/1236819.html
系统提供的控件虽然很丰富,但是,还远远不够。有的时候我们必须要自己定义控件来满足我们的要求。下面的案例,详细分析自定义控件的使用:
2.优酷效果
运行演示做好的优酷菜单效果,并且讲解实现思路;因为现在优酷已经更换界面,引用此界面主要为讲解自定义控件实现的思想。
01_优酷布局
1_创建工程YukuMenuDemo,图片全部拷贝到drawable-hdpi目录下
2_实现三个圆环-最里面的圆环
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:id="@+id/level1" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" android:background="@drawable/level1" android:layout_width="100dip" android:layout_height="50dip" > </RelativeLayout> </RelativeLayout>
3_实现三个圆环-中间园环
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"<