android 画面开发,Android开发技巧:动态创建UI界面

Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式。其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本文即介绍该技巧。

假设Android工程的一个xml文件名为activity_main.xml,定义如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity" >

android:id="@+id/DynamicText"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

在 MainActivity 中,希望显示这个简单的界面有三种方式(注:下面的代码均在 MainActivity 的 onCreate() 函数中实现 )。

(1) 第一种方式,直接通过传统的 setContentView(R.layout.*) 来加载,即:

setContentView(R.layout.activity_main);

TextView text = (TextView)this.findViewById(R.id.DynamicText);

text.setText("Hello World");

(2) 第二种方式,通过 LayoutInflater 来间接加载,即:

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界面,示例如下:

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的优点和用途,但是不要紧,先掌握基本技巧,后面的文章中,会慢慢将这些技术应用起来,到时侯就能理解其真正的应用场景了。

还是那句话,有啥不清楚的地方,欢迎留言讨论或者来信lujun.hust@gmail.com交流,或者关注我的新浪微博 @卢_俊 获取最新的文章和资讯。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值