欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

纯java模式和java与xml结合方式开发android ui界面对比简例

更新时间: 2014-01-05 02:01:24 责任编辑: Author_N1

 

纯Java方式和Java与xml结合方式开发Android UI界面对比简例

Android入门对比实战一:

1、Android允许开发者抛弃xml文件用Java开发UI,下面就是一个纯java模式开发的android小例子:

功能:点击button显示文字和时间。

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout layout = new LinearLayout(this);

        layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        setContentView(layout);

        layout.setGravity(Gravity.CENTER);
        layout.setOrientation(LinearLayout.VERTICAL);

        final TextView text = new TextView(this);
        text.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT));

        Button btn = new Button(this);
        btn.setText(R.string.ok);
        btn.setLayoutParams(new ViewGroup.LayoutParams(50, ViewGroup.LayoutParams.WRAP_CONTENT));

        layout.addView(text);
        layout.addView(btn);

        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                text.setText("Hello,Java Activity! " + new java.util.Date());
            }
        });
    }
}

结果:


结论:任何UI都需要传入this参数,即Context。UI通过context获取Android应用环境全局info。context本自是一个抽象类,android的Activity和Service本自继承了context,所以可以直接使用。

2、Android可以使用xml文件和Java开发UI,下面就是一个经典模式开发的android小例子:

功能:点击图片可以循环切换显示。

public class MainActivity extends Activity {
    ImageView image;
    LinearLayout layout;
    int[] imageSrc = {R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d,
            R.drawable.e, R.drawable.f, };
    int index;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        layout = (LinearLayout) findViewById(R.id.layout);

        image = new ImageView(this);
        image.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        layout.addView(image);
        
        image.setImageResource(imageSrc[0]);
        image.setOnClickListener(listener);
    }
    
    private OnClickListener listener = new OnClickListener() {
        public void onClick(View v) {
            image.setImageResource(imageSrc[(++index)%imageSrc.length]);
        }
    };
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center" 
    android:id="@+id/layout">

</LinearLayout>

结果:


结论:View是所有组件的基类,所有UI组件都继承了view类。view重要子类有ViewGroup。所有UI组件都可以使用view的属性和方法。PS:ViewGroup是一个抽象类,常用其子类作为容器。ViewGroup容器控制子控件分布依赖于ViewGroup.LayoutParams和ViewGroup.MarginLayoutParams。

综合结论:android中在res/layout下定义xml文件后R.java会自动收录,Java代码可通过setContentView(R.layout.filename);访问,UI的id由findViewById(R.id.sourceid);访问,以便接下来对于UI控件的使用控制等操作。

上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:01:24
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/4627/
本文WWW.DOC100.NET DOC100.NET版权所有。