静态和动态组件的选择

1.概念:

View组件可以用静态创建,即使XML文件,也可以用代码创建。

动态一般用代码加载;静态一般用XML加载

2.使用方法:

【1】.使用XML创建View  -- 推荐使用!!

Android图形用户界面上的组件可以使用XML文件创建

XML文件中使用属性指定组件的属性,如id等。

XML文件放置在res/layout下

【2】.使用代码创建View --有时候也使会用到

每一个视图组件都是一个View类型的对象

可以在代码中,使用视图类的构造方法,创建View对象

可以调用View对象的setXXX方法,设置其属性

3.动态使用的例子:

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".MainActivity" >

    <Button

        android:id="@+id/showDateDialog"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="显示日期对话框" />

    <Button

        android:id="@+id/showTimeDialog"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="显示时间对话框" />

</LinearLayout>

代码:

public class MainActivity extends Activity {

    private Button showDateDialog;

    private Button showTimeDialog;

    private int year;

    private int monthOfYear;

    private int dayOfMonth;

    private int hourOfDay;

    private int minute;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        showDateDialog = (Button) findViewById(R.id.showDateDialog);

        showTimeDialog = (Button) findViewById(R.id.showTimeDialog);

        // 获取系统时间

        Calendar calendar = Calendar.getInstance();

        year = calendar.get(Calendar.YEAR);

        monthOfYear = calendar.get(Calendar.MONTH);

        dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);

        Log.d("h_bl", year + "-" + monthOfYear + "-" + dayOfMonth);

        hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);

        minute = calendar.get(Calendar.MINUTE);

        showDateDialog.setOnClickListener(new ViewOcl());

        showTimeDialog.setOnClickListener(new ViewOcl());

    }

    /**

     * 点击弹出对话框的事件监听

     * 

     * @author Administrator

     * 

     */

    private class ViewOcl implements View.OnClickListener {

        @Override

        public void onClick(View v) {

            switch (v.getId()) {

            case R.id.showDateDialog: // 日期对话框

                DatePickerDialog dateDialog = new DatePickerDialog(

                        MainActivity.this, new DateSetCls(), year, monthOfYear,

                        dayOfMonth);

                dateDialog.show();

                break;

            case R.id.showTimeDialog: // 时间对话框

                TimePickerDialog timeDialog = new TimePickerDialog(

                        MainActivity.this, new OnTimeSetListener() {

                            @Override

                            public void onTimeSet(TimePicker view,

                                    int hourOfDay, int minute) {

                                Toast.makeText(getApplicationContext(),

                                        "选择时间:" + hourOfDay + "-" + minute,

                                        Toast.LENGTH_LONG).show();

                            }

                        }, hourOfDay, minute, true);

                timeDialog.show();

                break;

            }

        }

    }

    private class DateSetCls implements OnDateSetListener {

        @Override

        public void onDateSet(DatePicker view, int year, int monthOfYear,

                int dayOfMonth) {

            Toast.makeText(

                    getApplicationContext(),

                    "选择日期:" + year + "-" + (monthOfYear + 1) + "-" + dayOfMonth,

                    Toast.LENGTH_LONG).show();

        }

    }

}
时间: 2024-10-26 18:48:57

静态和动态组件的选择的相关文章

十三 .Flask wtforms组件和选择框动态数据实时更新

一 . wtforms组件     选择框动态数据实时更新 https://www.cnblogs.com/lovershowtime/p/11384494.html 1.wtforms组件使用(登录) 1. 用户登录 当用户登录时候,需要对用户提交的用户名和密码进行多种格式校验.如: 用户不能为空:用户长度必须大于6: 密码不能为空:密码长度必须大于12:密码必须包含 字母.数字.特殊字符等(自定义正则): login.html <!DOCTYPE html> <html lang=&

C/C++ 跨平台交叉编译、静态库/动态库编译、MinGW、Cygwin、CodeBlocks使用原理及链接参数选项

目录 0. 引言 1. 交叉编译 2. Cygwin简介 3. 静态库编译及使用 4. 动态库编译及使用 5. MinGW简介 6. CodeBlocks简介 0. 引言 UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够被授权使用的一个操作系统.linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打造的一个操作系统.为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规范,所以在运行机制上跟unix相近.同时,POSI

Android中BroadcastReceiver的两种注册方式(静态和动态)详解

今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来接收来自系统和应用中的广播.在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户

018_C语言静态库动态库

 linux下C语言编程环境 头文件目录:/usr/include/ 库目录:/usr/lib/ 动态库与静态库的区别:在计算机程序源代码需要通过翻译.汇编.链接过程而生成可执行文件,再由加载器加载到内存,两者区别就在于程序加载时链接到相应库的方式不同,程序编译时指定了静态库,编译后可直接运行,而编译时指定动态库时,编译后还要先指定库的路径. 静态库: ar -rs libmy_math.a *.o 生成静态库libmy_math.a ar -t 查看静态库 gcc test.c -L. -

windows库的创建和使用:静态库+动态库

windows库的创建和使用:静态库+动态库 一.静态库的创建和使用 1. 静态库创建 (1)首先创建工程test,测试代码如下: 1) test.h void test_print(); 2) test.cpp #include "test.h" #include <stdio.h> void test_print() { printf("test_print in static lib."); } 3)右击工程test:属性-->配置属性--&

Angualr2动态组件加载器

在Angular2中,组件是我们建立并指定页面上的元素和逻辑的主要途径.而我们通常加载它在其中包含了一些条件,使其加载动态标记的标签. 但也有情况下,我们不知道在编译时DOM结构.在这种情况下,我们必须对任意位置的需求添加组件,因此我们使用DynamicComponentLoader动态加载的组件.在这种情况下,我们将能够在指定的位置来实例化一个组件,它连接到一个视图. beta16之前,DynamicComponentLoader有三种方法,升级后删除了一种方法 loadAsRoot: 创建了

静态,动态,伪静态和SEO

文章来源:http://www.hongtaoseo.com/experience/1564.html 如何从SEO角度去设计网站URL:http://www.hongtaoseo.com/experience/604.html 静态.动态.伪静态的URL结构到底哪种更利于SEO 如果对SEO有了解的朋友都应该比较清楚,常见的URL表现形式有静态.动态.伪静态三种.如果是严格分类来说,伪静态也是动态的一种,只是表现形式为静态URL结构. 基本我们对一个网站进行系统的SEO操作,都会去分析一个网站

QML如何创建动态组件

QML动态组件指的是按需分配,需要时我们就创建一个自定义组件,也就是所谓的对象延迟实例化,而不是在程序一开始就创建它,不需要时我们就把它销毁以节约内存,而不是传统意义上的隐藏或覆盖.我们可以使用Component与Loader,也可以使用JavaScript的形式来完成. 先来介绍一下Component-- progress属性,加载组件的过程,从0.0到1.0变化. status属性,加载组件的状态,其枚举值分别是Component.Null/Ready/Loading/Error. url属

android 静态和动态设置 Receiver的 android:enabled值

0x 01 前提约束: 0x001 静态检查:指用action限定Intent,并使用包管理器的queryBroadCastReceivers方法,在flags字段置为0时查找ResolveInfo,检查结果是指它有没有找到组件. 0x002          动态检查:指在指定 包名&类全路径名构成的ComponentName后,调用包管理器的getComponentEnabledSetting方法,得到它的状态值,注意它是一个Int类型,可能取值及意义如下所列. 0x003