原文:Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy

上一篇:Android菜鸟的成长笔记(2)——第一个Android应用

我们前面已经做了第一个Android应用程序,虽然有点像QQ的登录界面,但是很多地方还是很难看,这一篇咱们来将这个界面做成一个标准的商业界面,并一起来了解Android中的代码运行的原理。

好吧,咱们开始吧,首先启动模拟器,为了让咱们的界面和QQ的登录界面一样我下载了一个QQ的apk文件,下面咱们将这个apk安装到我们的模拟器上,看看效果。

怎么将apk安装到我们的模拟器上面呢?先给大家介绍一个SDK自带的工具adb

如下图所示这个工具在sdk/platform-tools/下面

好吧直接双击怎么一闪而过呢?这是因为我们没有在环境变量里面配置,还记得前面配置JDK的环境变量吗?我们暂时先不配置

按住  开始+R  出现如下输入框,输入cmd然后确定

好了,我们现在进入到window的控制台了,如下图所示:

在这里用dos下面的命令:

D:  到D盘

cd xxx 到xxx目录

下面开始正式安装我们的apk文件,我将QQ的apk文件放在D盘的根目录

将apk文件安装到模拟器

可以看到Success这说明我们已经安装成功了,下面我们来打开模拟器上的QQ并到登录界面

其实有一种很好的学习方式就是抄袭,好吧,如果你认同我的观点下面我们就来抄袭一下QQ是怎么做的

在抄袭别人之前还必须有一定的技术,不然抄不过来的哦。呵呵,开个玩笑,其实这个很简单。再给大家介绍一个SDK自动的工具。

关于这个工具的详细请看我的另一篇博文:关于HierarchyViewer的使用

好了启动HierarchyViewer之后如图,我们选择QQ安装包,然后点击Load View Hierarchy菜单

我们可以找到我们想要的界面的组件,比如上面的QQ头像

好吧下面我们就一个一个仿照QQ的组件来修改我们的组件,修改好的xml布局文件如下

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center_horizontal"
android:background="#eeeeee">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/login_default_avatar"
android:layout_marginTop="20dip"
android:background="@drawable/qzone_bg_user_avatar"/>
<RelativeLayout
android:layout_marginTop="13dip"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/input_edit_text"
android:layout_centerHorizontal="true"
android:layout_width="270dip"
android:layout_height="100dip"
android:paddingTop="15dip"
android:background="@drawable/login_input">
<LinearLayout
android:id="@+id/input_account"
android:layout_width="match_parent"
android:paddingLeft="15dip"
android:layout_height="40dip">
<TextView
android:layout_width="40dip"
android:textColor="#cccccc"
android:layout_height="wrap_content"
android:text="@string/account"/>
<EditText
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="1"
android:background="@null"/>
</LinearLayout>
<ImageView
android:id="@+id/input_center_line"
android:layout_below="@id/input_account"
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="@drawable/qb_tenpay_trans_records_open"/>
<LinearLayout
android:layout_below="@id/input_center_line"
android:paddingLeft="15dip"
android:layout_width="match_parent"
android:layout_height="40dip">
<TextView
android:layout_width="40dip"
android:textColor="#cccccc"
android:layout_height="wrap_content"
android:text="@string/password"/>
<EditText
android:layout_width="0dip"
android:layout_height="40dip"
android:layout_weight="1"
android:background="@null"/>
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:layout_below="@id/input_edit_text"
android:layout_marginTop="20dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center">
<Button
android:layout_width="270dip"
android:layout_height="40dip"
android:text="@string/login_button"
android:background="@drawable/login_button_nor"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>

现在的界面如下:

这个界面和真真的QQ界面还有点不同的就是上面的标题myFirstApp,怎么去掉这个标题呢?

有关主题和去掉actionBar详细请看我的另一篇博文:Android中去掉标题的方法总结

我直接用第二种方法,在AndroidMainfest.xml文件中的<appliaction>中添加如下属性:

android:theme="@android:style/Theme.NoTitleBar" 

现在的运行效果如下:

这个界面比上一个界面好多了吧!下一篇将介绍实现界面的主要组件及使用方法。

源代码下载:http://download.csdn.net/detail/lxq_xsyu/6762549

下一篇:

Android菜鸟的成长笔记(4)——你真的理解了吗?

Android菜鸟的成长笔记(3)——给QQ登录界面说So Easy的更多相关文章

  1. Android菜鸟的成长笔记(2)——第一个Android应用

    原文:Android菜鸟的成长笔记(2)--第一个Android应用 上一篇:Android菜鸟的成长笔记(1)--Anddroid环境搭建从入门到精通 在上一篇Android菜鸟的成长笔记(1)中我 ...

  2. Android菜鸟的成长笔记(6)——剖析源码学自定义主题Theme

    原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上 ...

  3. Android菜鸟的成长笔记(4)——你真的理解了吗?

    原文:Android菜鸟的成长笔记(4)--你真的理解了吗? 在上一篇中我们查看了QQ的apk源文件中的布局结构,并仿照QQ完成了我们第一个应用的界面,详细请看<Android菜鸟的成长笔记&g ...

  4. Android菜鸟的成长笔记(1)——Android开发环境搭建从入门到精通

    原文:Android菜鸟的成长笔记(1)--Android开发环境搭建从入门到精通 今天在博客中看到好多Android的初学者对Android的开发环境的搭建不熟悉而导致不能进行学习,所以我决定自己写 ...

  5. Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上)

    原文:[置顶] Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上) 我们在用手机的时候可能会发现,即使应用被放到后台再返回到前台数据依然保留(比如说我们正在玩游戏,突然电话 ...

  6. Android菜鸟的成长笔记(13)——异步任务(Async Task)

    原文:[置顶] Android菜鸟的成长笔记(13)——异步任务(Async Task) Android的UI线程主要负责处理用户的事件及图形显示,因此主线程UI不能阻塞,否则会弹出一个ANR(App ...

  7. Android菜鸟的成长笔记(12)——Handler、Loop、MessageQueue

    原文:[置顶] Android菜鸟的成长笔记(12)——Handler.Loop.MessageQueue 当一个程序第一次启动时,Android会启动一条主线程(Main Thread),主线程主要 ...

  8. Android菜鸟的成长笔记(11)——Android中的事件处理

    原文:[置顶] Android菜鸟的成长笔记(11)——Android中的事件处理 Android提供了两种方式来处理事件,一个是基于回调的事件处理,另一个是基于监听的事件处理,举个例子: 基于回调的 ...

  9. Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值

    原文:[置顶] Android菜鸟的成长笔记(10)——使用Bundle在Activity之间传值 前面我们了解了如何启动一个Activity,一个Activity在启动另外一个Activity的时候 ...

随机推荐

  1. nodejs--express开发个人博客(-)

    写完了入门笔记,开始进入开发阶段吧.基于上一节的内容,现在着手开发个人博客系统.先划分一下功能吧 /:首页 /login:登陆 /reg:注册 /post:发表文章 /logout:退出 首先规划一下 ...

  2. Eclipse下执行main函数报java.lang.NoClassDefFoundError的解决

    今天执行eclipse下的一个java类,无论run还是debug,都报java.lang.NoClassDefFoundError.而且把main中函数都注释掉,执行还是报一样的错. 检查了一下这个 ...

  3. 在Eclipse/MyEclipse中安装spket插件

    Spket ide是强大的工具包为了JavaScript和XML的开发,这个强大的编辑器对JavaScript, XUL/XBLand Yahoo! Widget的开发都有全面的支持 ,比如代码完毕, ...

  4. sass玩转颜色总结笔记

    变量: $color:#f00; 1.变浅和加深颜色,sass使用HSL标准来变浅或加深颜色 lighten($color,10%); darken($color,30%);             ...

  5. BZOJ 4177: Mike的农场( 最小割 )

    显然是最小割... 对于规律(i, j, k) i,j 互相连边, 容量为k 对于规则(S, a, b) 新建一个点x, x与S中每个点连一条弧, 容量+∞, 然后再根据a决定x与源点或汇点连边. 跑 ...

  6. CairoSVG - Convert SVG to PNG or PDF - Contents

    CairoSVG - Convert SVG to PNG or PDF - Contents User Documentation Author Guillaume Ayoub Date 2011- ...

  7. Mac下显示隐藏文件 以及修改 hosts文件内容

    修改hosts 文件内容: 进入etc 文件夹,找到hosts 文件,把该文件复制出来,修改完里面的内容后,先把etc中的hosts 文件删除,然后在把修改后的文件脱机去 可能需要管理员的密码,你输入 ...

  8. XSS漏洞解决方案之一:过滤器

    一:web.xml文件 <!-- 解决xss漏洞 --> <filter> <filter-name>xssFilter</filter-name>   ...

  9. Java获取随机数的几种方法

    Java获取随机数的几种方法 .使用org.apache.commons.lang.RandomStringUtils.randomAlphanumeric()取数字字母随机10位; //取得一个3位 ...

  10. 1941. Scary Martian Word

    1941. Scary Martian Word 这道题 一个长度为3的字符串视为 一个 火星文 字母(ASCII 33-122) ,给出一个火星人认为恐怖的单词(由火星字母组成) 然后 给你一篇文章 ...