当前位置:操作系统 > 安卓/Android >>

Android 项目开发 基于Web Service 服务的中英翻译软件(二)主界面

首先看一下主界面的设计,首先要说的是搜索框,搜索框中包含“删除”按钮是怎么实现的。

  以前听说过是重写TextView可以实现这种效果,如google的搜索框,但我没有实现过,而我直接在布局文件中就解决掉了这个问题。

  

\

 

\

 

  当然啊,没有google做的美观,功能上也没有google的做的全面,一来是博主审美观天生缺陷,二来也是根据业务需求来的。

  那么我就介绍一下我的实现方式。

  RelativeLayout相对布局,RelativeLayout其内部的子组件的位置总是相对兄弟组件、父容器来决定的,因此叫做相对布局。上面的搜索框中包含一个TextView 和IamgeButton,search键先不要管,它不包含在RelativeLayout内,只看前面这两个控件,他们包含在RelativeLayout中,我这里先:

  1、确定RelativeLayout中组件的排列方式为水平排列,android:orientation="horizontal"

  2、将TextView 组件左对齐与其父组件(也就是RelativeLayout),android:layout_alignParentLeft="true"

  3、将IamgeButton组件放置在TextView的右边,android:layout_alignRight="@id/word"

  通过以上三步,就可以实现上面的样子。

 

	 1  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2                 android:orientation="horizontal"
 3                 android:layout_width="wrap_content" 
 4                 android:layout_height="wrap_content" 
 5                 android:gravity="center_vertical"
 6                 > 
 7                 <EditText 
 8                     android:id="@+id/word" 
 9                     android:layout_width="250dp" 
10                     android:layout_height="wrap_content" 
11                     android:textSize="18sp" 
12                     android:layout_alignParentLeft="true" 
13                     android:paddingRight="37px" 
14                     android:hint="@string/tishi"
15                     android:textColorHint="#55000000"/> 
16                 <ImageButton 
17                     android:id="@+id/delete_button" 
18                     android:background="@drawable/delete"
19                     android:scaleType="fitCenter" 
20                     android:layout_alignRight="@id/word" 
21                     android:layout_height="wrap_content" 
22                     android:layout_width="wrap_content" 
23                     android:layout_marginRight="10dp" 
24                     android:layout_marginTop="5dp"/> 
25             </RelativeLayout>

 

 

  其实,做布局最重要的是对各个属性的了解与掌握,比如layout__margin与padding之间的区别,layout_gravity与gravity之间的区别,在这里我就不说了,网上有很多的例子,但是对于初学者来说真的是搞不清的,(就像我),除非你想做一个专业级的UI。第二点就是细心,像字体大小的调节margin的调节都是一点一点调出来的,也跟自己个人经验少有关,关于这点,我觉的一定有必要知道px、dip(dp)、sp、in、mm、pt这些单位是怎么回事

  1、px(像素):每个px对应屏幕上的一个点。

  2、dip(dp device independent pixels 设备独立像素):一种基于屏幕密度的抽象单位,每英寸160点的显示器上 ,1dp=1px,随着屏幕密度的改变,dp与px的换算也会改变。屏幕密度一般分为240、160、120,你也可以根据实际开发在模拟器上修改你的屏幕密度。点击AVD Manager选择模拟器点details就可以看到了(1.6以上)。

  3、sp(scaled pixels 比例像素):主要处理字体大小,可以根据用户的字体大小首选项进行缩放。

  4、in(英寸):标准长度单位。

  5、mm(毫米):标准长度单位。

  6、pt(磅):标准长度单位,1/72英寸。

  

  好了,继续,关于内容显示的部分,这部分我的设计思路是这样的,当软件开启时,默认的界面是这样:什么内容也没有,当然也可以在后期,根据业务的需求在空白处添加一些连接,和一些功能模块。当在搜索框内添加了内容并Search后,在显示区内就有了内容。

\\

  

  当初我实现这个功能的时候,是为每一个View 设置了android:visibility属性,然后在程序中去控制,这样每一个View都要设置一遍,实在麻烦,但当我无意间发现 Layout组件也有这个属性的时候,我才发现,我可以直接控制Layout的android:visibility,当然Layout也是View嘛,只是没有想到。还有,需要被控制的View都要放在这个Layout中才可以,离开这个Layout,人家就不负责了。这个布局代码没什么技术含量就不贴了。

  再说一下,ProgressBar,在进行网络访问,或者查询数据库时,都会有一定的耗时,为了给用户更好的体验,我们不仅在程序中用到Handler机制(后面会讲),也要在界面上做足功夫,那么ProgressBar就是一个很好的组件,让用户不会感觉程序在后台处理数据的无反应状态这段时间里,认为程序“挂掉”。

 \

  ProgressBar的使用有简单的也有复杂的,它的表现形式也有很多种,比如进度条,还有像调节控件如经常见到的音量调节,未知耗时的读取等多种表现形式。关于具体的实现和用法大家可以查阅API或者上网查阅论坛资料,这里给大家一个同仁的链接供大家学习。

  http://www.eoeandroid.com/thread-1081-1-1.html

  如何在界面中间显示ProgressBar,并且在ProgressBar运行时,并且输入法调出,也不会改变ProgressBar的形状,我使用到了FrameLayout布局,因为当时由于直接在LinearLayout中居中显示,导致输入法调出时ProgressBar会变成椭圆形,被压扁了一样,是因为输入法从下向上调出时占领了ProgressBar的位置。

  FrameLayout帧布局,说白了这个布局的特点就是,在其内部所有的组件,都是重叠在一起的,一个压在一个身上,而主页面的整个根布局用的就是FrameLayout。也就是说,在FrameLayout内部的组件,他们都共享这一片大的区域,谁也不会影响到谁,玩过PS的同学应该能马上明白这个道理,那么,我只要设置ProgressBar在FrameLayout中center就可以了。在这个功能中,我同样设置了一个TextView来显示文字,看以看到TextView和ProgressBar是重叠在一起的,但他们谁也不会影响到谁,如同存在于同一个地点中的不同空间一样。

  关于布局,就说这么多了,我把整个页面的源码粘上。

main

		  1 <?xml version="1.0" encoding="utf-8"?>
  2 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:layout_width="fill_parent"
  4     android:layout_height="fill_parent"
  5 >
  6     
  7     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  8         android:orientation="vertical"
  9         android:layout_width="fill_parent"
 10         android:layout_height="fill_parent"
 11         android:background="#ff373737">
 12     
 13         <LinearLayout 
 14              android:orientation="horizontal"
 15             android:layout_height="wrap_content"
 16             android:background="#ff7d899d"
 17             android:gravity="center_horizontal"
 18             android:layout_marginBottom="20.0dp"
 19             android:layout_marginTop="20.0dp"
 20             android:layout_width="match_parent">
 21            
 22             <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 23                 android:orientation="horizontal"
 24                 android:layout_width="wrap_content" 
 25                 android:
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,