Android应用界面开发06
来源:互联网 发布:炒白银软件 编辑:程序博客网 时间:2024/06/05 06:38
Android应用界面开发
第三章学习
第一部分
1.继承View类来实现自定义控件
自定义控件的三种创建形式:
- 通过继承一个布局文件实现自定义控件。
- 继承已有的控件来实现自定义控件。
- 通过继承View类来实现自定义控件。
自定义控件是个大坑,并不能在此以偏概全阐述出它的精髓,笔记仅作为一方面的了解作用。
1.1 通过继承一个布局文件实现自定义控件
知识要点
关于dp、sp、dpi、px、density
- dp:density-independent pixel,密度(屏幕分辨率)无关像素,非文字的类尺寸推荐用dp
- sp:scale-independent pixel ,规模无关像素,文字类尺寸推荐用sp
- px:像素,一般不用,偶尔用1px表示一条线
- pdi:dots per inch:一英寸多少个像素点,常见取值 120,160,240
- density:密度,和标准dpi的比例(160px/inc)
提取布局的属性:theme & style —- 配置 “样式”
- theme:在manifest.xml中,可用android:theme=”@style/AppTheme”属性,替application(整个应用)添加统一的主题,默认主题保存在styles.xml中
- style:通过添加item,可以将通用的属性提取出来,填在此处,避免每一个新建的部件都重复填写同一属性,如果仍然填写,则覆盖style中同名的属性;style的部署,主要放在values.xml中,而使用时,在view类中添加style=”“属性进行配置
<!--配置style--> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
<!--使用style--> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" style="@style/TextAppearance.AppCompat.Title"/>
只要布局好一个xml文件,在需要使用的时候,仅一句include即可
<include layout="@layout/my_title"/>
可是这种自定义控件,自身没有响应点击等逻辑,需要时只有每次实例化控件,编写java代码来实现,没有复用性,于是有了下面这种更进阶的方式。
1.2 通过继承View类来实现自定义控件
知识要点
- LayoutInflater
- 获得View对象: 一般在活动中,要获取mxl中的控件是使用findViewById( )方法,而获取整个xml文件就需要用到LayoutInflater了
- LayoutInflater:布局填充器,可使用inflate( )方法将xml布局文件转化为View对象,获得LayoutInflater对象有三种方式
- inflate(int resource, ViewGroup root ):第一个参数是要加载的布局文件的id,第二个参数是给加载好的布局再添加一个父布局
眼见为实,操作如下:
public class TitleLayout extends LinearLayout {public TitleLayout(Context context, AttributeSet attrs) { super(context, attrs);//先获得LayoutInflater实例 LayoutInflater mLayoutInflater = getLayoutInflater(); //方法一 getSystemService(LAYOUT_INFLATER_SERVICE); //方法二 LayoutInflater.from(context); //方法三//通过inflate()解析布局文件xml View view = mLayoutInflater.inflate(R.layout.my_title,null); TextView textview = (TextView)view.findViewById(R.id.textview); }}
通过在构造方法中获取自定义部件来实现代码逻辑,完成了一种通用的可相应事件的自定义部件。
还可以重载onDraw()方法,对自定义控件进行绘制,比如:
以后学完SurfaceView,还可以制作不使用布局文件,仅继承自View或其子类来实现自定义控件,比如游戏。
上次跟着教程只做过一个游戏,感兴趣可以在github下载代码来看:github
0 0
- Android应用界面开发06
- Android 应用界面开发笔记
- Android应用界面开发01
- Android应用界面开发02
- Android应用界面开发03
- Android应用界面开发04
- Android应用界面开发05
- Android应用界面开发07
- Android应用界面开发08
- Android应用界面开发09
- Android笔记---- Android应用界面开发(3)
- Android开发之应用界面布局Layout
- 实验2 Android应用界面开发(1)
- Android应用界面开发-控件+布局 笔记
- Android 应用界面开发笔记 Service
- Android应用界面开发(一)
- Android应用界面开发(二)
- Android应用界面开发(三)
- PowerDesigner连接SqlServer数据库导出表结构
- OSPF(今晚再完善)
- android studio tabhost基础 多功能时钟app 设置闹钟 alarmmanager(五)
- ssh代码构建步骤
- 2016夏季练习——欧拉回路
- Android应用界面开发06
- springmvc 上传文件
- input disabled不能提交表单
- Linux网络编程(socket)
- myeclipse2014快捷功能之tostring
- LeetCode:Binary Tree Traversal(二叉树遍历非递归)
- 字典
- Android项目中sdk 23无法使用HttpGet 和HttpClient的问题解决--只需改一行
- web开发之数据安全