zoukankan      html  css  js  c++  java
  • 2.1.3在代码中控制ui界面 和 用xml和Java代码混合控制UI界面


    MainActivity.java
    /**
     * @author Administrator
     * @param 说明可以用代码控制 布局,不用xml
     * 
     */
    public class MainActivity extends Activity {
         
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //创建一个线性布局管理器  new 1个 LinearLayout
            LinearLayout layout = new LinearLayout(this);
            //设置该Activity显示layout
            super.setContentView(layout);
            layout.setOrientation(LinearLayout.VERTICAL);
            //TextView
            final TextView tv = new TextView(this);
            //按钮
             Button b = new Button(this);
             b.setText(R.string.ok);
             b.setLayoutParams(new ViewGroup.LayoutParams(
             ViewGroup.LayoutParams.WRAP_CONTENT
             ,ViewGroup.LayoutParams.WRAP_CONTENT));
            //向Layout容器中添加TextView
            layout.addView(tv);
            //向Layout容器中添加按钮
            layout.addView(b);
            //为按钮绑定一个事件监听器
            b.setOnClickListener(new OnClickListener(){
            
            public void onClick(View v){
            tv.setText("Hello , Android," + new java.util.Date());
            }
            });
        }
    }
    

     

    strings.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello World, MainActivity!</string>
        <string name="app_name">Test69</string>
    <string name= "ok">我把 show 改成 tv了, 这里局部变量调用 使用final **局部变量</string>
    </resources>
      从上面的程序的粗体字代码可以看出,该程序中所用到的UI组件都是通过new关键字
    创建出来的,然后程序使用LinearLayout容器来“盛装”这些UI组件,这样就组成一T图形
    用户界面。
    运行结果


        在模拟器中运行上面的程序将可以看到如图2.4所示界面。
        从上面的程序代码中不难看出,完全在代码中控制UI界面不仅不利于高层次的解耦合.而且由于通过new关键来创建UI组件,需要调用方法来设置UI组件的行为.因此代码也显得十分臃肿;相反,如果通过XML文件来控制UI界面,开发者只要在XML布局文件中使用标签即可创建UI组件,而且只要配置简单的属性即可控制UI组件的行为,因此要简单得多。
     
    提示:一··一··一··一··一··一··一··一··一··一··一··一··一
          虽然Android应用完全允许开发者像开发Swing应用一样在代码中控制UI. 界面,但这种方式不仅编程烦琐,而且不利于高层次的解藕,因此不推荐开发者 使用这种方式.一
     
    > > 2.1.4使用XML布局文件和Java代码混合控制UI界面
        当混合使用XML布局文件和代码来控制U1界面时,习惯上把变化小、行为比较固定的组件放在XML布局文件中管理,而那些变化较多、行为控制比较复杂的组件则交给Java代码来管理。
    实例:简单图片浏览器
         例如下面的应用,我们先在布局文件中定义一个简单的线性布局容器,该布局文件的代码如下。
    程序清单:codes\02\2.1\Mix View\res\Iayout\main.xml
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" 
        android:id="@+id/root"
        >
    </LinearLayout>
    MainActivity.java
    public class MainActivity extends Activity {
        //定义访问图片的数组
        int[] images = new int[]{
                R.drawable.mm0,
                R.drawable.mm01,
                R.drawable.mm02,
                R.drawable.mm03,
                R.drawable.mm04,
                R.drawable.mm05,
                R.drawable.mm06,
                R.drawable.mm07,
                R.drawable.mm08,
                        
        };
        int currentImg = 0;
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //获取LinearLayout布局容器
            LinearLayout mian = (LinearLayout)findViewById(R.id.root);
            //程序创建ImageView组件
            final ImageView image = new ImageView(this);
            //将ImageView 组件添加到LinearLayout布局容器中
            mian.addView(image);
            //初始化显示第一张图片 
            image.setImageResource(images[0]);
            image.setOnClickListener(new OnClickListener(){
                
                public void onClick(View v){
                    if(currentImg >= 4){
                        currentImg = -1;
                    }
                    //改变ImageView里显示的图片
                    image.setImageResource(images[++currentImg]);
                }
            });
            
        }
    }

    运行如下

    上面的程序中第一行粗体字代码获取了该Activity所显示的LinearLayou“线性布局管理器).第2和第3行粗体字代码用于创建一个ImageView,并将该ImageView添加到—其中LinearLayout布局管理器通过XML布局文件管理,而ImageView组件则由Java代码管理。
        除此之外,上面的程序还为ImageView组件添加了一个单击事件。当用户单击该组件时,ImageView显示下一张图
    片。运行上面的程序可以看到如图2.5所示界面。

     

      

  • 相关阅读:
    Call KernelIoControl in user space in WINCE6.0
    HOW TO:手工删除OCS在AD中的池和其他属性
    关于新版Windows Server 2003 Administration Tools Pack
    关于SQL2008更新一则
    微软发布3款SQL INJECTION攻击检测工具
    HyperV RTM!
    OCS 2007 聊天记录查看工具 OCSMessage
    CoreConfigurator 图形化的 Server Core 配置管理工具
    OC 2007 ADM 管理模板和Live Meeting 2007 ADM 管理模板发布
    Office Communications Server 2007 R2 即将发布
  • 原文地址:https://www.cnblogs.com/firecode/p/2543896.html
Copyright © 2011-2022 走看看