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

原文: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)——你真的理解了吗?

时间: 2024-10-01 21:55:37

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

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

原文:Android菜鸟的成长笔记(6)--剖析源码学自定义主题Theme 还记得在Android菜鸟的成长笔记(3)中我们曾经遇到了一个问题吗?"这个界面和真真的QQ界面还有点不同的就是上面的标题myFirstApp,怎么去掉这个标题呢?",当时我直接在AndroidMainfest.xml中添加了一个属性: android:theme="@android:style/Theme.NoTitleBar" 可能有的朋友就会迷惑了,为什么添加了这个属性就可以了.这一篇

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

原文:Android菜鸟的成长笔记(4)--你真的理解了吗? 在上一篇中我们查看了QQ的apk源文件中的布局结构,并仿照QQ完成了我们第一个应用的界面,详细请看<Android菜鸟的成长笔记>专栏.这一篇中我们来具体看看这个界面到底是怎么呈现出来的,具体的原理是什么等问题,下面我们将一步一步的解开留在我们心中的谜团. 有的朋友可能会产生这样的疑问为什么几句代码就能显示这样好看的界面? 其实能让这个界面显示的如此丰富多彩,一半功劳在我们编写的那几句代码,还有一半功劳在我们尊敬的google工程师

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

原文:Android菜鸟的成长笔记(2)--第一个Android应用 上一篇:Android菜鸟的成长笔记(1)--Anddroid环境搭建从入门到精通  在上一篇Android菜鸟的成长笔记(1)中我们已经介绍了Android环境的搭建,下面我们就来开发一个属于我们自己的好玩的应用吧,是不是已经迫不及待了,下面我们先来看看运行效果. 首先我们要创建一个手机模拟器 点击eclipse上面的模拟器图标,弹出如下弹框. 点击右边的New...按钮,我们来创建一个"手机",这个手机几乎和我们

Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?

原文:Android菜鸟的成长笔记(5)--Android系统源代码你下载了吗? 在上一篇中我们用Android系统源代码分析了我们前面写的代码,有的朋友可能就会问怎么才能下载到Google官方的源代码呢?下面我们通过Git管理工具来对Android系统源代码进行下载.另外为了方便有的朋友下载,我将下载好的各个版本的源码存放到360云盘,云盘下载链接如下: http://yunpan.cn/QDEkq3uFrbvrI (访问密码:968e) 首先下载Git版本管理工具:下载地址:http://c

Android菜鸟的成长笔记(7)——什么是Activity

原文:[置顶] Android菜鸟的成长笔记(7)--什么是Activity 前面我们做了一个小例子,在分析代码的时候我们提到了Activity,那么什么是Activity呢? Activity是Android应用程序提供交互界面的一个重要组件,也是Android重要组件之一(另外3个是Service.BroadcastReceiver和ContentProvider). 与开发Web应用时建立Servlet类相似,建立自己的Activity也需要继承Activity基类,当然,在不同应用场景下

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

原文:Android菜鸟的成长笔记(1)--Android开发环境搭建从入门到精通 今天在博客中看到好多Android的初学者对Android的开发环境的搭建不熟悉而导致不能进行学习,所以我决定自己写一个搭建过程的文章. 一.JDK安装 http://www.oracle.com/index.html  下载地址 选择JavaSE JDK进行下载 下载下来后进行安装(默认步骤安装) 设置环境变量步骤如下: 我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:    

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

原文:[置顶] Android菜鸟的成长笔记(13)--异步任务(Async Task) Android的UI线程主要负责处理用户的事件及图形显示,因此主线程UI不能阻塞,否则会弹出一个ANR(Application Not Responding)异常,所以不能在UI线程中执行耗时操作.AsyncTask<>是一个抽象类,通常被继承,继承时需要指定三个泛型: AsyncTask<Params, Progress, Result> Params:启动任务执行的输入参数的类型 Prog

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

原文:[置顶] Android菜鸟的成长笔记(14)-- Android中的状态保存探究(上) 我们在用手机的时候可能会发现,即使应用被放到后台再返回到前台数据依然保留(比如说我们正在玩游戏,突然电话来了,当接完电话游戏继续玩),某些应用甚至会保留你离开时候的状态及数据,这些原理是什么?怎么去实现这样的应用?这将是我们这一篇文章要解开的问题. 有一句很常见的代码如下,很多人不知道为什么要加这么一句话 @Override protected void onCreate(Bundle savedIn

Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)

原文:Android菜鸟的成长笔记(15)-- Android中的状态保存探究(下) 在上一篇中我们简单了解关于Android中状态保存的过程和原理,这一篇中我们来看一下在系统配置改变的情况下保存数据及恢复数据的过程. 下面我们先来看一个现象:(代码在 Android中状态保存探究(上)中) 先启动应用如下: 打印的Log 再翻转屏幕 打印的Log如下 可以看到每翻转一次屏幕实际上系统会停止原理的activity并销毁然后重新启动一次,在这个过程中会调用onSaveInstanceState方法