任何编程学习起步均是HelloWorld,作为稍有>net编程经验的我们来说就跳过这步吧,咱们且从简单登录界面开始。先看看效果:

一、准备知识:

1. 安卓环境:安装好JDK,直接去官网下载ADT-bundle集成包后更新即可使用。

2. 项目目录:一张图说明一切

二、页面布局:

还是一幅图说明一切

那么这个界面的布局如何呢?

<LinearLayout >最外边的DIV,用的是线性布局,方向是垂直

    <TextView/>就是上图“初始用户名。。。”这几个字所在Lable

    <LinearLayout >里面的DIV,水平布局
<TextView/>用户名Lable
<EditText/>用户名TextBox
</LinearLayout> <LinearLayout>里面的DIV,水平布局
<TextView/>密码Lable
<EditText/>密码TextBox
</LinearLayout> <Button/>登录按钮 </LinearLayout>

上图一看,就会一半,下来一个一个看:

1. 最外层DIV:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:layout_margin="5dip" >

定义宽高的停靠方式,有

fill_parent、match_parent:是一样的,为了兼容低版本,建议使用fill_parent

设置布局/控件为fill_parent将强制性让它布满整个屏幕或填满父控件的空白

wrap_content:被内容撑大,刚好能显示下内容为止

Orientation:排列方式,vertical垂直,默认是HORIZONTAL水平

2. 文本框:

<TextView
android:id="@+id/lbl_LoginPass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_LoginPass_Text"
android:textSize="15.0sp" />

这里出现了两个未知属性:

@+id/lbl_LoginPass和@string/lbl_LoginPass_Text

其实完全可以直接写:

android:text="用户名"

系统会提示这是硬编码,建议改写(汗,写了这么多年硬编码),他意思是这里仅仅引用字典中一个变量的名称,具体的值在字典中去维护,那么字典在哪里呢?

Res/Values/String.xml中维护了这个字典:

<resources>
<string name="app_name">登录DEMO</string>
<string name="action_settings">Settings</string>
<string name="lbl_LoginName">用户名:</string>
<string name="lbl_LoginPass_Text">密 码:</string>
<string name="btn_login">开始登陆</string>
</resources>

这里编码规范得注意一下了:假如控件ID为lbl_LoginPass,则他的字典名应该为lbl_LoginPass_Text为了防止多个页面的字典名重复建议最好加上页面前缀,如Login_lbl_LoginPass_Text

完整代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" android:layout_margin="5dip" >
<TextView
android:id="@+id/form_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="初始用户名和密码都是123" />
<LinearLayout
android:id="@+id/layout_login_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5.0dip"
android:layout_marginTop="10.0dip"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_LoginName" />
<EditText
android:id="@+id/txt_login_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="15.0sp" />
</LinearLayout> <LinearLayout
android:id="@+id/login_pwd_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/layout_login_name"
android:layout_centerHorizontal="true"
android:layout_margin="5.0dip"
android:orientation="horizontal" >
<TextView
android:id="@+id/login_pass_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/lbl_LoginPass"
android:textSize="15.0sp" /> <EditText
android:id="@+id/txt_login_pwd"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:password="true"
android:textSize="15.0sp" />
</LinearLayout> <Button
android:id="@+id/btn_login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:onClick="btn_click"
android:text="登陆" />
</LinearLayout>

3. 页面后台
打开页面对应的后台代码:MainActivity.java

手动实现按钮的点击事件:

    public void btn_click(View v)
{
TextView lblInfo=(TextView)findViewById(R.id.form_title); EditText txt_login_name=(EditText)findViewById(R.id.txt_login_name);
EditText txt_login_pass=(EditText)findViewById(R.id.txt_login_pwd);
String loginName=txt_login_name.getText().toString().trim();
String loginPass=txt_login_pass.getText().toString().trim();
if(loginPass.equals("")&&loginName.equals(""))
{
lblInfo.setText("登录成功!");
}
else
{
lblInfo.setText("登录失败!");
} }

其实这些倒没啥说的一看名字就知道啥意思。

.Net程序员安卓学习之路1:登陆界面的更多相关文章

  1. .Net程序员安卓学习之路4:使用xutils Get Post数据

    前面使用了一些网络上找来的类进行网络访问,后来发现了安卓开发中有一个国人写的类库xutils比较全面,也比较经典,故后续使用xutils类库进行记录. 本例服务端使用WCF来实现,写好的WCF服务端在 ...

  2. .Net程序员安卓学习之路6:等待条

    一般在需要访问网络或者长时间操作的时候避免界面无响应才使用:等待条 本例将实现一个无框架的等待条,效果如下: 点击后,使线程Sleep5秒,就出现如下效果: 实现代码如: private Progre ...

  3. .Net程序员安卓学习之路5:使用xutils注入View和事件以及图片的显示

    xUtils注入和图片显示 一.xUtils注入 引用官方介绍: ViewUtils模块: •android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定: •新的事件绑定方式,使用混淆工 ...

  4. .Net程序员安卓学习之路3:Post数据给网络API

    本例我们实现一次真正的网络交互,将数据POST到API,然后接收服务器的返回值进行处理,同时引入自定义类型和传说中阿里的FastJson. 实现思路如: 1. 在API端接收客户POST的数据还原成对 ...

  5. .Net程序员安卓学习之路2:访问网络API

    做应用型的APP肯定是要和网络交互的,那么本节就来实战一把Android访问网络API,还是使用上节的DEMO: 一.准备API: 一般都采用Json作为数据交换格式,目前各种语言均能输出Json串. ...

  6. zz 游戏程序员的学习之路(中文版)

    游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. ...

  7. GJM : 游戏程序员的学习之路

    原文作者:miloyip  原帖地址:http://gad.qq.com/article/detail/7180681 原帖备注:版权所有,禁止匿名转载:禁止商业使用:禁止个人使用. 腾讯前端技术总监 ...

  8. 五年.net程序员Java学习之路

    大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. ...

  9. 2017PHP程序员的进阶之路

    2017PHP程序员的进阶之路 又是一年毕业季,可能会有好多毕业生即将进入开发这个圈子,踏上码农这个不归路.根据这些年在开发圈子总结的LNMP程序猿发展轨迹,结合个人经验体会,总结出很多程序员对未来的 ...

随机推荐

  1. DP(01背包) UESTC 1218 Pick The Sticks (15CCPC C)

    题目传送门 题意:长度为L的金条,将n根金棍尽可能放上去,要求重心在L上,使得价值最大,最多有两条可以长度折半的放上去. 分析:首先长度可能为奇数,先*2.然后除了两条特殊的金棍就是01背包,所以dp ...

  2. Codeforces Round #293 (Div. 2)

    A. Vitaly and Strings 题意:两个字符串s,t,是否存在满足:s < r < t 的r字符串 字符转处理:字典序排序 很巧妙的方法,因为s < t,只要找比t字典 ...

  3. UVa10779 Collectors Problem(最大流)

    很容易想到源点向所类型有贴纸连边,容量为Bob一开始有的数量:然后贴纸向汇点连边,容量为1. 接下来就是交换部分的连边了.注意交换一次一次进行,每次只能交换一张. 交换,是对于两种贴纸而言,仅会发生在 ...

  4. 从Apache Storm学到的经验教训 —— storm的由来(转)

    阅读目录 Storm来源 初探 再探 构建第一个版本 被Twitter收购 开源的Storm 发布之后 Storm的技术演进 构建开发者社区版 离开Twitter 提交到Apache Apache孵化 ...

  5. oracle系列--第一篇 数据库基础

    第一章 数据库基础 1.1 数据管理概述 1.1.1 什么是数据管理 与我们人类相比,计算机的最大优势就是能够高速.精准地运行,其运行的过程就是执行程序代码和操作指令.处理数据的过程.可以说,数据处理 ...

  6. Swift -- 官方文档Swift-Guides的学习笔记

    在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸) 因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help>docu ...

  7. php的具体配置学习笔记

    1.将php配置为apache的一个模块,使用loadmodule指令完成. 2.写下面的语句,此外需强调的是,每次配置都需要重新启动apache 3.php文件,要指定将其php模块来处理 4.PH ...

  8. JavaScript - 倒计时

    http://www.helloweba.com/demo/loading/ WEB开发中经常会用到倒计时来限制用户对表单的操作,比如希望用户在一定时间内看完相关协议信息才允许用户继续下一步操作,又比 ...

  9. mysql时该如何估算内存的消耗,公式如何计算?

    经常有人问配置mysql时该如何估算内存的消耗.那么该使用什么公式来计算呢? 关心内存怎么使用的原因是可以理解的.如果配置mysql服务器使用太少的内存会导致性能不是最优的;如果配置了太多的内存则会导 ...

  10. Java开发环境准备

    Java开发环境准备 这里主要讲JDK的配置,JDK的安装和安装一般的应用软件一样,下载JDK安装就可以了,但安装后主要是配置好才可用.我相信很多初学者和我刚开始一样,安装好JDK以后就直接点击桌面上 ...