• 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所示界面。

     

      

  • 相关阅读:
    【bzoj4240】有趣的家庭菜园
    「洛谷 P1801」黑匣子
    「SDOI 2009」Elaxia的路线
    NOIP 2016【蚯蚓】
    NOIP 2014【斗地主】
    尺取法
    POJ 3169 Layout
    51nod【1196】字符串的数量
    51nod1671【货物运输】
    hihocoder1075【开锁魔法】
  • 原文地址:https://www.cnblogs.com/firecode/p/2543896.html
Copyright © 2020-2023  润新知