动态创建一个组件
来源:互联网 发布:制作linux u盘启动盘 编辑:程序博客网 时间:2023/09/28 02:06
Android 界面编程有两种基本的方法,一种是在代码中,动态创建一个个组件,及把这些组件用Layout来进行组合成复杂的界面展现.一种是用图形化的方式来编写 布局Layout,这些布局被保存在XML文件中,会编译成资源,被程序中的Activity来加载(setContentView()), 再通过findViewById方式来获得每一个界面组件的引用进行操作.
一,布局管理(Layout)
每一个界面组件都是View的子类,都可以单独占用一个屏幕,但是真正的有用的界面都是这些组件的组合,在Android中都是用各种Layout来进行布局管理,这与传统的J2SE中的一些AWT,SWING界面方式基本相同,这里就不多说.
二,一个单独的界面元素:
在前面说到Hello World例子中,讲过这样一段代码.在Activity中.
- public class HelloActivity extends Activity {
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- TextView tv = new TextView(this);
- tv.setText(“Hello, World!”);
- this.setContentView(tv);
- }
- }
这里并没有用到Layout,这就是单独的组件方式。也可以改为:
- super.onCreate(savedInstanceState);
- Button btn = new Button(this);
- btn.setText(“TestButton”);
- this.setContentView(btn);
编译运行,会有一个全屏的Button,当然这不是你想要的实用的界面.那我们就用Layout来布局
- super.onCreate(savedInstanceState);
- Button btn = new Button(this);
- btn.setText(“TestButton”);
- Button btn2 = new Button(this);
- btn2.setText(“TestButton2″);
- LinearLayout layout = new LinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- layout.addView(btn);
- layout.addView(btn2);
- this.setContentView(layout);
编译运行,你就可以看到了两个上下排列的按钮,当然对于布局管理器的使用,做过PC 上AWT,SWING的人都不陌生,这里就不赘述。
那想必大家不难猜到,在AWT中,在手机的j2me中,都是用Listener 来处理事件响应,Android也未能脱俗。这与Blackberry,Symbian中的Observer是同一个道理。都是使用了设计模式的观察者模式。下面来看一个能响应事件的例子。
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.LinearLayout;
- public class HelloActivity extends Activity implements OnClickListener {
- Button btn = null;
- Button btn2 = null;
- public void onClick(View v) {
- if (v == btn)
- {
- this.setTitle(“You Clicked Button1″);
- }
- if (v == btn2)
- {
- this.setTitle(“You Clicked Button2″);
- }
- }
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- btn = new Button(this);
- btn2 = new Button(this);
- btn.setText(“TestButton1″);
- btn2.setText(“TestButton2″);
- btn.setOnClickListener(this);
- btn2.setOnClickListener(this);
- LinearLayout layout = new LinearLayout(this);
- layout.setOrientation(LinearLayout.VERTICAL);
- layout.addView(btn);
- layout.addView(btn2);
- this.setContentView(layout);
- }
- }
步骤是:
一,生成两个Button,配置Click事件监听者为HelloActivity ,此类实现了OnClickListener接口。
二,放入布局,按布局显示两个Button
三,按下其中一个Button,生成Click事件,调用HelloActivity 的OnClick接口函数。
四,对于View参数的值,判断是哪个View(Button)。改写Activity的Titile内容。注意,可别去对比View.getId(),缺省情况下,每个组件的Id值都为-1,除非人为设定Id值,用可视化编程时,为自动为其生成一个Id值。
- 动态创建一个组件
- 点灯游戏--一个动态创建组件的示例
- 一个用组件动态创建Excel文件的实例
- 动态创建tidhttp组件
- 动态创建vb组件
- 动态创建组件
- QtQuick动态创建组件
- Android动态创建组件
- 创建一个COM组件
- 创建一个COM组件
- VFP开发动态创建组件
- QML如何创建动态组件
- 用fragment创建动态组件
- 动态创建一个按钮
- 创建一个动态网页
- Angular4动态创建组件--根据组件名称动态创建出来组件
- Angular4动态创建组件--根据组件名称动态创建出来组件
- BCB中实现动态创建组件
- ListView中item的左右滑动
- dataadapter dataset 注意事项
- 优化SQL语句
- C#字符间转换
- ADO.net操作数据库总结
- 动态创建一个组件
- QTablewidget用法汇总
- Dialog整体架构详解
- 在Tomcat中配置404自定义错误页面全解
- js window 事件
- 用java.util.Observable实现Observer模式
- 如何利用Video4Linux获取摄像头数据
- 博客应该怎么写
- 解决获取DropDownList绑定的记录值,获得的总是第一个记录?