Android研究之动态创建UI界面具体解释
Android的基本UI界面一般都是在xml文件里定义好,然后通过activity的setContentView来显示在界面上。这是Android UI的最简单的构建方式。事实上,为了实现更加复杂和更加灵活的UI界面。往往须要动态生成UI界面,甚至依据用户的点击或者配置,动态地改变UI。本文即介绍该技巧。对事件和进程的可能安卓设备实现触摸事件的监听。跨进程
如果Androidproject的一个xml文件名称为activity_main.xml,定义例如以下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<LinearLayout
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"
tools:context=".MainActivity"
> <TextView
android:id="@+id/DynamicText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/> </LinearLayout>
|
在 MainActivity 中,希望显示这个简单的界面有三种方式(注:以下的代码均在 MainActivity 的 onCreate() 函数中实现 )。
(1) 第一种方式,直接通过传统的 setContentView(R.layout.*) 来载入,即:
|
1
2
3
4
5
6
7
|
setContentView(R.layout.activity_main);
TextView
text = (TextView)this.findViewById(R.id.DynamicText); text.setText("Hello World");
|
(2) 另外一种方式。通过 LayoutInflater 来间接载入,即:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
LayoutInflater
mInflater = LayoutInflater.from(this); View
contentView = mInflater.inflate(R.layout.activity_main,null); TextView
text = (TextView)contentView.findViewById(R.id.DynamicText); text.setText("Hello World");
setContentView(contentView);
|
注:
LayoutInflater 相当于一个“布局载入器”,有三种方式能够从系统中获取到该布局载入器对象,如:
方法一: LayoutInflater.from(this);
方法二: (LayoutInflater)this.getSystemService(this.LAYOUT_INFLATER_SERVICE);
方法三: this.getLayoutInflater();
通过该对象的 inflate方法。能够将指定的xml文件载入转换为View类对象。该xml文件里的控件的对象。都能够通过该View对象的findViewById方法获取。
(3)第三种方式,纯粹地手工创建 UI 界面
xml 文件里的不论什么标签,都是有对应的类来定义的,因此。我们全然能够不使用xml 文件,纯粹地动态创建所需的UI界面,示比例如以下:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
LinearLayout
layout = new LinearLayout(this); TextView
text = new TextView(this); text.setText("Hello World");
text.setLayoutParams(new
ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); layout.addView(text);
setContentView(layout);
|
Android动态UI创建的技巧就讲到这儿了,在本演示样例中。为了方便理解。都是採用的最简单的样例,因此可能看不出动态创建UI的长处和用途,可是不要紧,先掌握基本技巧,后面的文章中,会慢慢将这些技术应用起来,到时侯就能理解其真正的应用场景了。
Android研究之动态创建UI界面具体解释的更多相关文章
- 在Android中实现service动态更新UI界面
之前曾介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的.那么如何实现service动态更新UI界面呢?案例:通过service ...
- Android Handler传递参数动态更新UI界面demo
package com.example.demo_test; import android.app.Activity; import android.os.Bundle; import android ...
- android中实现service动态更新UI界面
案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务. 注册BroadcastReceiver 在主程序activity中注册一个Bro ...
- Android开发1:基本UI界面设计——布局和组件
前言 啦啦啦~本学期要开始学习Android开发啦~ 博主在开始学习前是完完全全的小白,只有在平时完成老师要求的实验的过程中一步一步学习~从此篇博文起,博主将开始发布Android开发有关的博文,希望 ...
- [android] fragment的动态创建
在一个商业软件中,会有很多的界面,如果没一个界面对应一个activity,那么activity会非常的多,清单文件也会非常的乱,谷歌在android3.0以后引入了新的概念叫fragment frag ...
- Android 子线程无法刷新UI界面
问题:在Android开发中,子线程无法直接更改UI界面视图的刷新 这个时候 Handler 起到了至关重要的作用. 简单来说 , Handler就是用来传递消息的. Handler可以当成子线程与主 ...
- Android开发精彩博文收藏——UI界面类
本文收集整理Android开发中关于UI界面的相关精华博文,共大家参考!本文不定期更新! 1. Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各 ...
- Android Studio 屏幕方向以及UI界面状态的保存
package com.example.orientation; import android.os.Bundle; import android.util.Log; import android.v ...
- Android Studio 图形化设计 UI 界面
我们开发 Android 程序必定是从 UI 开始的 ,使用最新版的 Android Studio 可以在图形化界面下设计软件 UI, Android Studio 默认的布局是 Constraint ...
随机推荐
- mybatis递归,一对多代码示例
今天需要做一个功能,根据专业,有不同的章节,章节下面有对应的习题, 由于只有这么两级,可以不用使用递归,直接查询父集,之后foreach查询子集放入对应的list集合. 虽然实现了,感觉毕竟,太low ...
- hdu 1114 dp动规 Piggy-Bank
Piggy-Bank Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit S ...
- [BZOJ3203][SDOI2013]保护出题人(凸包+三分)
https://www.cnblogs.com/Skyminer/p/6435544.html 先不要急于转化成几何模型,先把式子化到底再对应到几何图形中去. #include<cstdio&g ...
- [COGS2427][HZOI 2016]seq
[COGS2427][HZOI 2016]seq 题目大意: 一个长度为\(n(n\le10^6)\)的序列,\(q(q\le10^6)\)次操作,每次将所有\(a\)变成\(b\),求最后的序列. ...
- bzoj 3165
题意: 给出平面上一些线段,在线询问与x=x0相交的线段中,交点y最大的线段的标号,支持添加线段. 大概思路: 用线段树维护,线段树每个线段记录贯穿(左右端点在该区间外或上)的原线段中能覆盖其它贯穿该 ...
- 读书笔记_Effective_C++_条款二十八:避免返回handlers指向对象内部成分
举个例子: class Student { private: int ID; string name; public: string& GetName() { return name; } } ...
- redis配置参数简介
redis配置查看方式: 1.redis的安装目录查看redis.conf 2.登陆redis客户端,使用 config get xx命令. 比如:查看所有的配置: config get * [roo ...
- Java解读内存,优化编程
1.别用new Boolean 在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装bool ...
- 利用站点ip引导提高站点权重的可行方案
如题,利用站点每天高数额的ip訪问量来提高站点权重,首先在谈论这个话题之前,我举个样例.我们知道想要一个站点权重非常高,首先它站点本身的内容一定是有价值的,而且受大众欢迎的,人们会常常訪问这个站点来寻 ...
- Delphi 的插件框架 WisdomPluginFramework
WisdomPluginFramework是融合OSGI微内核理念 + Eclipse的扩展点概念而精心设计的轻量级插件框架, 由Delphi实现,但可以使用于Delphi.BCB.VC++中,提供非 ...