`
jakielong
  • 浏览: 228415 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android动态创建一个个组件

阅读更多

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值。
转自:http://www.cnblogs.com/windwithlife/archive/2009/07/22/1528666.html
分享到:
评论

相关推荐

    Android使用addView动态添加组件

    在Android开发中,动态添加组件是一项常见的需求,特别是在创建自定义布局或实现可变内容的界面时。`addView()` 方法就是实现这一功能的关键。本文将深入探讨如何使用 `addView()` 添加组件,并以动态添加列表项和 `...

    android 动态创建滚动表格 bate1

    - 在表格布局中,每个单元格可以是一个`TextView`或其他视图,通过在`Adapter`中动态创建和配置。 - 表格的行和列可以通过在`Adapter`的`getItemCount()`方法返回适当的值来确定。 - 如果需要复杂的表格布局,...

    安卓(Android)动态创建多个按钮并添加监听事件

    1.获取屏幕大小,以合理设定 按钮 大小及位置 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay()....3.这里创建16个按钮,每行放置4个按钮 Button Btn[] = new Button

    Android应用:动态创建按钮,放在现有布局中

    `Test001`可能是实现这个功能的一个示例项目,而`动态Button效果图.JPG`可能展示了动态创建的按钮在Android设备上的实际效果。在实际开发中,可以根据需要调整按钮的样式和点击事件的逻辑,使其适应各种应用场景。 ...

    Android动态创建监听广播

    总结,动态创建BroadcastReceiver在Android开发中提供了更大的灵活性,可以按需创建和管理广播监听。通过正确注册和注销,我们可以轻松实现解锁、锁屏及安装事件的监听,从而实现特定的功能需求。在实际项目中,根据...

    Android-一种简单有效的android组件化方案

    DDComponentForAndroid可能是一个开源项目,由luojilab团队开发,提供了一套完整的组件化解决方案,包括组件的创建、加载、交互等工具和示例代码,方便开发者快速理解和实践组件化开发。 总的来说,"Android-一种...

    Android项目之组件化

    组件化的核心是将一个大型的Android应用拆分为多个功能明确、相互独立的模块,每个模块即为一个组件。这些组件可以单独开发、测试和部署,减少了耦合性,提高了代码的可复用性和可维护性。常见的组件包括:业务逻辑...

    “可动态布局”的Android抽屉组件之构建基础

    首先,抽屉组件的核心是`android.support.v4.widget.DrawerLayout`,它是Android Support Library中的一个控件,用于创建滑动抽屉效果。在`xml`布局文件中,我们通常会将其作为根视图,并设置相应的属性,如`android...

    Android 动态生成 步骤 ProgressBar

    在Android开发中,ProgressBar是一个非常常见的组件,用于展示进度或者加载状态。动态生成步骤ProgressBar,主要是为了在运行时根据需求创建并更新这种组件,比如在多步骤操作中显示当前完成的步骤。以下将详细介绍...

    Android四大组件简述

    当用户启动一个应用或者在应用之间切换时,系统会创建或恢复相应的Activity。Activity有多种生命周期状态,包括运行、暂停、停止和销毁,开发者需要根据这些状态妥善管理资源和UI更新。 接下来是Service。Service是...

    android组件Fragment介绍

    要创建一个 Fragment,必须创建一个 Fragment 的子类(或者继承自一个已存在的它的子类)。Fragment 类的代码看起来很像 Activity。它包含了和 Activity 类似的回调方法,例如 onCreate()、onStart()、onPause()以及...

    “可动态布局”的Android抽屉组件之完整篇

    本篇将深入探讨如何创建一个可动态布局的Android抽屉组件,提供一个完整的实现案例源码。 首先,抽屉组件的基本概念:DrawerLayout是Android提供的一个视图容器,它可以包含两个主要区域——主内容视图和一个或多个...

    Android layout动态创建

    总结,Android动态创建Layout是一项强大的技术,允许开发者在运行时根据需求构建和调整用户界面。对于实现如多段柱形图这样的复杂视觉效果,动态布局可以提供更大的灵活性和控制力。同时,结合动画和性能优化,可以...

    Android 表格控件-动态实现表格效果(内容、样式可扩展)

    总结,实现一个动态且样式可扩展的Android表格控件,关键在于理解TableLayout的基本用法,以及如何在代码中动态创建和管理视图。同时,结合自定义View和样式设计,可以构建出满足各种需求的表格组件。在实际开发中,...

    Android-Calces一个Android组件化自动构建脚本

    总的来说,Android-Calces是一个强大的工具,它简化了Android开发中的组件化管理和屏幕适配工作。通过自动处理这些繁琐的任务,开发者可以更加专注于创新和提高应用的功能与性能。如果你正在寻找提升开发效率和代码...

    android自定义组件简单Demo

    自定义组件通常需要创建一个新的Java类,继承自`View`或`ViewGroup`。在这个例子中,我们可能创建了一个名为`TestOurselfWidget`的类,它直接继承自`View`。 2. **重写构造函数**:为了初始化自定义组件,我们需要...

    安卓Android源码——SurfaceView添加组件view不被组件覆盖.zip

    在安卓开发中,`SurfaceView` 是一个非常重要的视图组件,它允许开发者在应用程序中创建一个独立于窗口管理器的表面,这个表面可以用于显示持续更新的图像,如视频播放或者游戏画面。`SurfaceView` 提供了一个优化的...

    android动态创建fragment,横竖屏切换.

    本篇将深入探讨如何在Android中动态创建Fragment以及在横竖屏切换时保持状态。 首先,让我们了解Fragment的基本概念。Fragment是一个可以包含用户界面的模块化组件,它可以被添加到Activity中,也可以从Activity中...

    uni小程序 SDK android 组件化

    在实际开发中,"unimpsdktest3"这样的项目文件名可能代表一个包含uni-app SDK测试的Android项目,开发者可以通过这个项目来实践和理解如何在Android应用中集成和使用uni小程序SDK,进行组件化开发。 总结来说,uni...

    Android-AutoRegister:一种更高效的组件自动注册方案(android组件化开发)

    这可能涉及到动态地修改AndroidManifest.xml文件,或者创建一个启动时运行的初始化类,来动态注册组件。 4. **运行时注册**:当应用启动时,执行初始化代码,确保所有自动注册的组件都被正确地注册到系统中。 5. *...

Global site tag (gtag.js) - Google Analytics