动态创建一个组件
2011-11-16 17:11
423 查看
Android 界面编程有两种基本的方法,一种是在代码中,动态创建一个个组件,及把这些组件用Layout来进行组合成复杂的界面展现.一种是用图形化的方式来编写
布局Layout,这些布局被保存在XML文件中,会编译成资源,被程序中的Activity来加载(setContentView()), 再通过findViewById方式来获得每一个界面组件的引用进行操作.
一,布局管理(Layout)
每一个界面组件都是View的子类,都可以单独占用一个屏幕,但是真正的有用的界面都是这些组件的组合,在Android中都是用各种Layout来进行布局管理,这与传统的J2SE中的一些AWT,SWING界面方式基本相同,这里就不多说.
二,一个单独的界面元素:
在前面说到Hello World例子中,讲过这样一段代码.在Activity中.
复制到剪贴板 Java代码
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,这就是单独的组件方式。也可以改为:
复制到剪贴板 Java代码
super.onCreate(savedInstanceState);
Button btn = new Button(this);
btn.setText(“TestButton”);
this.setContentView(btn);
编译运行,会有一个全屏的Button,当然这不是你想要的实用的界面.那我们就用Layout来布局
复制到剪贴板 Java代码
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是同一个道理。都是使用了设计模式的观察者模式。下面来看一个能响应事件的例子。
复制到剪贴板 Java代码
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值。
布局Layout,这些布局被保存在XML文件中,会编译成资源,被程序中的Activity来加载(setContentView()), 再通过findViewById方式来获得每一个界面组件的引用进行操作.
一,布局管理(Layout)
每一个界面组件都是View的子类,都可以单独占用一个屏幕,但是真正的有用的界面都是这些组件的组合,在Android中都是用各种Layout来进行布局管理,这与传统的J2SE中的一些AWT,SWING界面方式基本相同,这里就不多说.
二,一个单独的界面元素:
在前面说到Hello World例子中,讲过这样一段代码.在Activity中.
复制到剪贴板 Java代码
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,这就是单独的组件方式。也可以改为:
复制到剪贴板 Java代码
super.onCreate(savedInstanceState);
Button btn = new Button(this);
btn.setText(“TestButton”);
this.setContentView(btn);
编译运行,会有一个全屏的Button,当然这不是你想要的实用的界面.那我们就用Layout来布局
复制到剪贴板 Java代码
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是同一个道理。都是使用了设计模式的观察者模式。下面来看一个能响应事件的例子。
复制到剪贴板 Java代码
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值。
相关文章推荐
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应
- 点灯游戏--一个动态创建组件的示例
- lzg_ad:创建一个第三方设备驱动程序组件
- C# 动态创建一个类
- Js版本的打老鼠游戏--这里简单用一个图标表示老鼠 关键字:js对表格进行动态创建
- 使用jQuery动态创建一个表格,根据用户数输入的内容添加一行数据
- 动态创建一个与该 vector 对象大小一致的数组,把 vector 对象的所有元素复制给新数组_初学vector对象4
- 通过Visual C#创建一个Windows组件,然后把其接口以COM形式发布即可(转贴)
- 在Asp.net Ajax中动态创建TabPanel控件中碰到的一个问题
- 第三部分:Android 应用程序接口指南---第一节:应用程序组件---第三章3-2创建一个content provider
- 用CCRenderTexture动态创建纹理返回一个精灵
- OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法
- jquery动态创建的一个BUG??
- 每天一个c++小程序(2):二维数组动态创建
- [Andriod官方训练教程]使用Fragment创建一个动态的UI之创建一个灵活的UI
- 基于jquery的一个OutlookBar类,动态创建导航条
- C# 动态创建组件(属性及事件)
- Ember 翻译——教程九:创建一个复杂的组件
- 代码创建一个居中的按钮(动态创建控件)