`
wu.sheng
  • 浏览: 66837 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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.初始化

 

 

2.跳转页面

 

 

2
0
分享到:
评论

相关推荐

    《Android UI设计》PDF

    许多开发人员需要一本Android UI设计入门级教程,其能够同时针对移动UI的设计模式和碎片化解决方案进行深入分析。 《Android UI设计》面向创建移动应用的产品经理、设计师和开发者,系统讲解了从事Android UI设计...

    android UI设计技巧

    使用Jetpack Compose进行UI构建是现代Android开发的新趋势,它允许开发者以声明式的方式编写界面,提高了开发效率。 5、**图标和准则** 图标在UI设计中扮演着重要的角色。Android提供了Material图标库,包括多种...

    UI.rar_android_android studio_android ui_android ui 布局_页面

    在Android开发中,UI设计是至关重要的,因为它直接影响到用户对应用的第一印象和使用体验。Android Studio是Google官方推荐的集成开发环境(IDE),用于构建Android应用,包括UI设计。本压缩包“UI.rar”似乎包含了...

    Android UI开发专题

    Android作为全球最广泛使用的移动操作系统之一,其UI开发能力备受关注。本次Android UI开发专题旨在深入探讨Android平台上UI设计的关键技术和实践方法。 #### 二、资源管理:`android.content.res.Resources` **1....

    安卓Android源码——UI界面源码.zip

    1. **Android UI框架**:Android UI系统基于View和 ViewGroup两大类。View是UI的基本元素,如按钮、文本框等,而ViewGroup是容器,用于组织和布局多个View,如LinearLayout、RelativeLayout和FrameLayout等。 2. **...

    android UI大全

    "android UI大全"这个资源包,显然集成了多种Android用户界面元素的源码和示例,旨在帮助初学者快速入门,并为面试做准备。让我们深入探讨一下其中可能包含的知识点。 1. **Android Widgets**: 文件名中的Widgets...

    android UI界面设计

    4. 主要的 UI 交互方式(触屏还是使用 D-pad/trackball):在设计 UI 界面时,需要考虑到主要的 UI 交互方式。 5. 软键盘还是物理键盘:在设计 UI 界面时,需要考虑到软键盘还是物理键盘。 6. 了解不同设备之间的相...

    android UI 特效集合

    在Android开发中,UI特效是提升用户体验和应用吸引力的关键元素。这个"android UI 特效集合"可能包含了一系列精心设计的界面动态效果、过渡动画以及交互式设计,旨在帮助开发者们构建更加生动、吸引人的应用程序。...

    AndroidUI界面开发规范

    ### AndroidUI界面开发规范 #### 一、引言 随着移动设备的普及和发展,用户界面(UI)设计在软件开发中的重要性日益凸显。一个良好的UI不仅能够提升用户体验,还能够帮助开发者更好地传达产品理念。本篇文章将从...

    androidUI详解文档

    12. **Android Studio与XML布局**:Android Studio是官方集成开发环境,其内置的布局编辑器允许开发者以图形方式设计UI。XML布局文件用于定义界面结构,同时支持代码编写和预览。 综上所述,"androidUI详解文档"将...

    android 从入门到精通电子书

    《Android从入门到精通》是一本专为初学者设计的Android开发指南,旨在帮助读者全面了解并掌握Android应用开发的基本技能。这本书详细介绍了Android开发环境的搭建、Android应用程序的基础架构、UI设计、数据存储、...

    Android UI 生成器

    android UI 生成器 可以生成android的UI减轻工作,比eclipse内置的好多了,直接生成布局文件拉人项目直接使用

    android UI界面开发图片

    在Android平台上进行UI界面开发时,图片资源是至关重要的元素,它们不仅决定了应用的视觉吸引力,也直接影响用户体验。本文将围绕“Android UI界面开发图片”这一主题,深入探讨相关知识点,帮助开发者创建出美观且...

    移植Android的UI组件到Web端以Android的方式来制作高性能优体验的WebApp

    AndroidUI4Web正是这样一款框架,它旨在将Android的UI组件移植到Web端,从而让开发者能够以Android的方式创建高性能且用户体验优秀的WebApp。 AndroidUI4Web的核心理念是复用Android的UI设计思想和组件模型,使得...

    《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf

    《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用程序开发教程(第2版)》教学课件02Android UI设计.pdf《Android应用...

    Android UI demo(远程医疗)

    在Android平台上,UI设计与实现是构建任何应用的基础,尤其是对于远程医疗这样的应用程序,用户界面的设计至关重要,因为它直接影响到用户的体验和效率。本项目“Android UI demo(远程医疗)”主要展示了如何在...

    android UI定制的一些资料

    在Android平台上,UI(用户界面)定制是一项关键的技术任务,它允许开发者根据需求和品牌风格创建独特的用户体验。这里,我们探讨的是"android UI定制的一些资料",这些资料可能包括设计原则、布局技巧、自定义视图...

Global site tag (gtag.js) - Google Analytics