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 ...
随机推荐
- [BZOJ4340][BJOI2015]隐身术(后缀数组)
考虑到K很小,于是可以暴搜每次用的是哪种操作,跳过AB相等的字符可以用SA求LCP加速. 主要流程就是,枚举B的每个后缀,对每个后缀统计合法前缀个数.DFS搜索每次决策,用SA跳过相同字符,当A或B匹 ...
- 【矩阵快速幂优化DP】【校内测试】
实际上是水水题叻,先把朴素DP方程写出来,发现$dp[i]$实际上是$dp[i-k]-dp[i-1]$的和,而看数据范围,我们实际上是要快速地求得这段的和,突然就意识到是矩阵快速幂叻. 构建矩阵什么的 ...
- hdu 1569 最小割
和HDU 1565是一道题,只是数据加强了,貌似轮廓线DP来不了了. #include <cstdio> #include <cstring> #include <que ...
- hdu 3046 最小割
每个栅栏其实就是一条边,修一些栅栏,使得狼不能抓到羊,其实就是求一个割,使得羊全在S中,狼全在T中. #include <cstdio> #include <cstring> ...
- phpRedis函数使用总结
/*1.Connection*/ $redis = new Redis(); $redis->connect('127.0.0.1',6379,1);//短链接,本地host,端口为6379,超 ...
- Python3的变化
http://www.cnblogs.com/tips4python/archive/2011/05/31/2064290.html print 由一个语句(statement)变为一个函数 Pyth ...
- Lnmmp
简介 LNMMP=Linux+Nginx+MySQL+Memcache+PHP: 利用Nginx的高性能特点做前端反向代理服务器,分发用户请求,并在能够利用缓存的地方使用Memcache缓存服务,以加 ...
- CentOS 6.9/7通过yum安装指定版本的Tomcat
说明:通过yum好处其实很多,环境变量不用配置,配置文件放在大家都熟悉的地方,通过rpm -ql xxx可以知道全部文件的地方等等. 一.安装Tomcat(8+) // 下载脚本 # git clon ...
- Ext文本输入框:Ext.form.TextField属性汇总(转) (
本章介绍Ext.form.TextField组件的基本用法: <form id="form1" runat="server"> <div ...
- Android学习笔记(三)之带有侧边索引的快速查找(跟带字母索引查找的通讯录差不多)
喜欢另辟蹊径的我,在这里废话不多说了,直接上代码和图片了. 效果图如下: 第一步:MainActivity的代码如下: package net.loonggg.test; import java.ut ...