Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 760|回复: 0

[实例教程]Android 动态创建一个组件

[复制链接]

该用户从未签到

发表于 2011-10-22 14:08:09 | 显示全部楼层 |阅读模式
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值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-22 19:44 , Processed in 0.290709 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表