首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

Android UI入门 (十分用方式,类HTML页面展现技术探索)

2012-08-21 
Android UI入门 (非常用方式,类HTML页面展现技术探索)?????开始的时候,要首先声明一下,这边文章,是一个以

Android UI入门 (非常用方式,类HTML页面展现技术探索)

?????开始的时候,要首先声明一下,这边文章,是一个以扫除开发技术障碍为目标的学习经验。并不适合正统的Android UI功能开发。我们知道,正统的页面开发,会使用layout的xml描述页面、自动生成类R来完成资源定位。能够给我们的UI开发带来强大的功能,也符合MVC的开发模式。而我现在要做的,是让页面生成、布局、内容显示、事件都用Java代码来完成。这样的目的其实也很明显,想通过自己的框架代码控制UI显示,可以用于服务端配置控制客户端显示,完成类似HTML的功能。

???? 首先,根据常规,我们建立ActivityMain的主Activity。

???? 然后,可以通过下面的代码的方式,设置UI控件;进行页面布局;利用反射进行事件绑定。

package org.studio.crusoe.sample.android;import org.studio.crusoe.sample.android.util.Reflection;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.text.InputType;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.ScrollView;import android.widget.TextView;public class ActivityMain extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        ScrollView sv = new ScrollView(this);        LinearLayout layout = new LinearLayout(this); // 线性布局方式        layout.setOrientation(LinearLayout.VERTICAL); // 控件对其方式为垂直排列        layout.setBackgroundColor(Color.GRAY);        TextView tv = new TextView(ActivityMain.this);        tv.setId(12341);        tv.setText("用户名:");        layout.addView(tv);        EditText et = new EditText(ActivityMain.this);        et.setId(12342);        et.setText("");        et.setSingleLine();        layout.addView(et);        TextView tv1 = new TextView(ActivityMain.this);        tv1.setId(12343);        tv1.setText("密码:");        layout.addView(tv1);        EditText et1 = new EditText(ActivityMain.this);        et1.setId(12344);        et1.setSingleLine();        et1.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);        et1.setText("");        layout.addView(et1);        Button b = new Button(ActivityMain.this);        b.setId(12345);        b.setText("登录");        layout.addView(b);        try {            b.setOnClickListener((OnClickListener) Reflection                    .createInstance("org.studio.crusoe.sample.android.ButtonClickListener"));        } catch (Exception e) {            // TODO: handle exception        }        layout.setBackgroundColor(0xff00ffff);         sv.addView(layout);        setContentView(sv);    }}

?

在事件处理中,可以实现页面的变化和数据的传递

package org.studio.crusoe.sample.android;import android.content.Context;import android.view.View;import android.view.View.OnClickListener;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;public class ButtonClickListener implements OnClickListener{    public void onClick(View v) {        Context context = v.getContext();        LinearLayout layout = (LinearLayout)v.getParent();                EditText et = (EditText)layout.findViewById(12342);        layout.removeAllViews();                TextView tv = new TextView(context);        tv.setText("欢迎你:" + et.getText());        layout.addView(tv);    }}

?

由于Activity作为页面载体,目前掌握到信息,必须要在AndroidManifest.xml中声明,这样会影响自身框架的灵活性。目前的思路是选择确定数量的Activity,通过框架代码来完成页面展现。技术上应该问题不大。

现在有一个隐患,从现在情况来看,通过layout的配置方式,功能十分强大,比代码执行更好,这个让我想到了C#中WPF的XAML的思路。

另外的遗留问题是,需要规划设置多少个主Activity,并且实现对应的Intents,才能实现框架的灵活性。

?

页面效果:

1.初始化

?

? Android UI入门 (十分用方式,类HTML页面展现技术探索)

2.跳转页面

? Android UI入门 (十分用方式,类HTML页面展现技术探索)

?

热点排行