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 ...
随机推荐
- JavaScript初步
隐式转换 其他类型转换成布尔类型: undefined --> false null --> false 0或者0.0或者NaN --> false 字符串长度为0 --> f ...
- 使用matplotlib绘图(三)之饼图
# 使用matplotlib绘制饼图 import numpy as np import matplotlib.pyplot as plt # 设置全局字体 plt.rcParams['font.sa ...
- FastReport.Net使用:[28]数据合并
基础数据 1.拖动数据源中的数据列到报表设计器中,获得一张简单的报表. 2.下面使用两种方法将期中考试和期末考试的成绩合并到一行显示 合并数据(分组方法) 1.按学生名字和科目来进行分组,成绩文本框咱 ...
- php基础知识一
1.PHP是什么: 开源,免费的,跨平台的 2.PHP能做什么: 3.PHP的特点: 4.PHP的标记风格: <?php ?> <? ?> <script languag ...
- BZOJ1021 SHOI2008循环的债务
dp模拟即可. d[i][j][k]表示使用前i种面值,1号手里钱为j,2号手里钱为k时最少操作数 使用滚动数组压缩空间 #include <cstdio> #include <cs ...
- Mac 配置几个环境变量
终端 open -t ~/.bash_profile 打开.bash_profile export PATH=${PATH}:/Users/maxinliang/Android/sdk/pla ...
- bzoj 1231: [Usaco2008 Nov]mixup2 混乱的奶牛 -- 状压DP
1231: [Usaco2008 Nov]mixup2 混乱的奶牛 Time Limit: 10 Sec Memory Limit: 162 MB Description 混乱的奶牛 [Don Pi ...
- SHELL异常处理(转载)
写SHELL好久了,经常被异常困扰,可竟然坚持了若干年没用过,回想以前服务过的公司,阿弥陀佛,罪过罪过.废话少说,希望此篇文章可以协助大家和我彻底结束SHELL脚本就是LINUX命令集合的初级阶段. ...
- MyISAM重启之后的一次血泪教训
最近经历了一次MyISAM重启的血泪教训,小小的故障历经3个小时才全部解决完毕,特此铭记一下,以后坚决防止在同一个地方跌倒两次. 事情的过程: 某日早7点接到几条主库报警,给值班组打电话后得到的消息是 ...
- python模块整理29-redis模块
date:20140530auth:jinhttp://github.com/andymccurdy/redis-pyhttps://github.com/andymccurdy/redis-py/b ...