.Net程序员安卓学习之路1:登陆界面

任何编程学习起步均是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("123")&&loginName.equals("123"))
        {
            lblInfo.setText("登录成功!");
        }
        else
        {
            lblInfo.setText("登录失败!");
        }

    }

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

时间: 2024-10-11 23:19:20

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

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

前面使用了一些网络上找来的类进行网络访问,后来发现了安卓开发中有一个国人写的类库xutils比较全面,也比较经典,故后续使用xutils类库进行记录. 本例服务端使用WCF来实现,写好的WCF服务端在:http://www.cnblogs.com/madyina/p/3454741.html 下载部署即可 该服务说明如下: 这4个公开方法均返回一个User对象,其中最后一个还接收一个User对象. 下面我们就分别请求这4个资源. 第一步:实现界面 使用相对布局,放置2个按钮,分别为[Get Te

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

xUtils注入和图片显示 之前我们写事件比如Btn的Click事件一般采用硬编码或者Linstener的方式来实现,从界面某个元素取值或者赋值必须首先使用findcontrol来找到他较为麻烦且难以维护,而这些使用xUtils就能很简洁的完成,比如下例我们实现点击Btn给文本框赋值操作: 点击Btn后: 要实现xUtils注入首先得在onCreate中加入: ViewUtils.inject(this); //注入view和事件 之后定义控件如下: @ViewInject(R.id.lbl_i

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

本例我们实现一次真正的网络交互,将数据POST到API,然后接收服务器的返回值进行处理,同时引入自定义类型和传说中阿里的FastJson. 实现思路如: 1. 在API端接收客户POST的数据还原成对象,给每个属性加个后缀后输出: 2. 在客户端输入用户名和密码,用来和服务器端返回的进行对比: 我们POST给服务器的是name=mady&pwd=123,服务器分别加了后缀为name=madya &pwd=1231所以我们客户端需要输入madya和1231才能验证成功. 具体操作展示如下:

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

做应用型的APP肯定是要和网络交互的,那么本节就来实战一把Android访问网络API,还是使用上节的DEMO: 一.准备API: 一般都采用Json作为数据交换格式,目前各种语言均能输出Json串. 假如使用PHP输出一段简单的Json,可以这么写: <?php $arr = array ('users'=>array('mady','123')); echo json_encode($arr); ?> 输出的Json如下: {"users":["mady

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

一般在需要访问网络或者长时间操作的时候避免界面无响应才使用:等待条 本例将实现一个无框架的等待条,效果如下: 点击后,使线程Sleep5秒,就出现如下效果: 实现代码如: private ProgressDialog pd; public void btn_click(View v) { pd = ProgressDialog.show(MainActivity.this, "标题", "加载中,请稍后……"); /* 开启一个新线程,在新线程里执行耗时的方法 */

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

游戏程序员的学习之路(中文版) Milo Yip · 1 天前 感谢 @楚天阔(tkchu)编写脚本及整理中文译本数据,自动从英文版生成中文版,SVG / PDF 版本中的书籍图片现在链接至豆瓣页面. Github miloyip/game-programmer 检视/下载中文版 SVG / PDF 「真诚赞赏,手留余香」 赞赏 15 人赞赏 程序员游戏开发书籍推荐 分享 举报 977 文章被以下专栏收录 Milo的编程 进入专栏 97 条评论 写下你的评论 trycatch 这是劝退吧...

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

大学毕业后笔者进入一家外企,做企业CRM系统开发,那时候开发效率最高的高级程序语言,毫无疑问是C#.恰逢公司也在扩张,招聘了不少.net程序员,笔者作为应届生,也乐呵呵的加入到.net程序员行列中. C#.net非常容易上手,之前在大学里,做过winform和webform开发,也曾经在老师那里承接过小项目,赚点外快.于是在工作岗位上驾轻就熟,很容易就上手了企业开发框架,仅一年多,笔者就成为公司的开(jia)发(ban)骨(feng)干(xian). C#.net的网评比Java要差,笔者曾经在

菜鸟程序员的成长之路(三)——2014,逝去的半年,奋斗的半年

从3月份到现在,仅仅半年的时间让我扮演了两个完全不同的角色,从在校生一下变成了毕业生,作为毕业生不能再像在校生一样自由自在,无所顾忌,想怎样就怎样,肆无忌惮的生活,浪费时间.如果你想从容的面临未来的生活,就需要彻头彻尾的改变.多一份稳重,多一份责任,多一份担当. 鉴于LZ不太擅长写非技术博文,那就以碎碎念的形式,来回顾一下我的奋斗历程: 技术 3月份开始备战软考,软考准备了两个多月的时间,从看视频做笔记,再到大家一起讲课,复习,做试题巩固,整个过程至今历历在目.软考虽然不难,但是对于基础差的同学

菜鸟程序员的成长之路(四)——欢送2014,欢迎2015

最近半个月一直想写年终总结,却迟迟没有提笔,不是不知道写什么而是需要写的东西太多,不知从哪下笔.继菜鸟程序员的成长之路(三)--2014,逝去的半年,奋斗的半年,请大家跟我一起再重新将2014"活"一遍. 2014年对于我来说承载了满满的回忆,也是我人生中比较重要的一年,因为在这一年里发生很多重要的事:1.我毕业了:2.我考过了软件设计师了:3.我考上了在职研究生... 学习篇 对于学习,其实有很多想写的内容,由于上篇博文:2014,逝去的半年,奋斗的半年,我已经写了2014上半年的总