------- 源自梦想永远是你IT事业的好友、只是勇敢地说出我学到! ----------

按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点也都能说出了123来,但是这些孤立的点终究显得太零散了,因此,我想从今天开始,以最经典的手机安全卫士项目为例,自己锻炼一下,也是想和大家交流交流,希望大家都能给出见解,共同进步。

十一、应用程序的主界面

之前的完成以后,用户每次打开都会有更新提醒,这样对于用户来说是很烦的。用户体验就不是特别好了。

因此我们需要这样一个选项,在用户选择关闭更新提醒的时候,就不会显示提醒,直接进入主界面。



设置中心》设置。。。



下面先做下主界面(LinearLayout):

1.标题:

具体代码:

			    <TextView
style="@style/text_title_style"
android:text="手机卫士" />

这里我们把TextView的样式抽取到样式文件中,

具体代码:

			    <style name="text_title_style">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">50dp</item>
<item name="android:gravity">center</item>
<item name="android:background">#8066ff00</item>
<item name="android:textColor">#000000</item>
<item name="android:textSize">20sp</item>
</style>

之后再用到这个TextView的时候就直接使用style="@style/text_title_style"即可。

同样我们自己可以做一些常用的style.



2.下面我们做一个滚动的TextView

具体代码:

			    <TextView
style="@style/fill_wrap_style"
android:singleLine="true"
android:ellipsize="marquee"
android:text="我是您的手机小卫士,专门保护您的手机,快些使用下面的功能吧,随时随地为您服务!"/>

3.下面就是各个功能模块,使用GridView。

指定列数为3.

		    <GridView
style="@style/fill_style"
android:id="@+id/gv_home"
android:numColumns="3"
></GridView>

指定各模块的图片和名称:

			private static final String[] names = {"手机防盗","通讯卫士","软件管理","进程管理"
,"流量统计","手机杀毒","系统优化","高级工具","设置中心"};
private static final int[] icons = {R.drawable.safe,R.drawable.callmsgsafe,R.drawable.app,R.drawable.taskmanager
,R.drawable.netmanager,R.drawable.trojan,R.drawable.sysoptimize,R.drawable.atools,R.drawable.settings};

定义一个适配器HomeAdapter,继承BaseAdapter。复写getView方法。

在这之前我们先写一个list_home_item.xml文件,里面是一个ImageView和一个TextView。

具体代码:

				    <ImageView
android:id="@+id/iv_home_icon"
android:layout_width="50dip"
android:layout_height="50dip"
android:src="@drawable/app"
/> <TextView
android:id="@+id/tv_home_name"
style="@style/wrap_style"
android:text="手机防盗"
android:textColor="#000000"
android:textStyle="bold"
/>

上面的src和text仅为演示用。演示后应删除掉。

HomeAdapter的getView方法具体代码:

					@Override
public View getView(int position, View convertView, ViewGroup parent) {
//把布局文件转化成View对象
View view = View.inflate(getApplicationContext(), R.layout.list_home_item, null);
ImageView iv_home_icon = (ImageView) view.findViewById(R.id.iv_home_icon);
iv_home_icon.setImageResource(icons[position]);
TextView tv_home_name = (TextView) view.findViewById(R.id.tv_home_name);
tv_home_name.setText(names[position]);
return view;
}

还要记得写getCount()方法,不然显示为0个功能模块:

				public int getCount() {
return names.length;
}

小问题:

1几个模块靠的太近,要显示有一些距离:

在<GridView下设置网格垂直方向间距:android:verticalSpacing="10dp"



2设置界面没有标题栏。



3滚动文本没有自动滚动。

若想要其滚动,应该设置focusabelInTouchMode为True.

需要新建类,重写TextView方法。

具体代码:

						public class FocusTextView extends TextView {
public FocusTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
} public FocusTextView(Context context, AttributeSet attrs) {
super(context, attrs);
} public FocusTextView(Context context) {
super(context);
}
@Override
@ExportedProperty(category = "focus")
public boolean isFocused() {
return true;
}
}

再将滚动文本的标签改为com.dongdong.phonesafe.ui.FocusTextView即可。

------- 源自梦想永远是你IT事业的好友、只是勇敢地说出我学到! ----------

Android小项目之十一 应用程序的主界面的更多相关文章

  1. Android小项目之十 应用程序更新的签名问题

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  2. Android小项目之十二 设置中心的界面

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  3. Android小项目之四 自动更新检查的逻辑

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  4. Android小项目练习之一 项目简介

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  5. Android ActionBar应用实战,高仿微信主界面的设计

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/26365683 经过前面两篇文章的学习,我想大家对ActionBar都已经有一个相对 ...

  6. Android小项目之七 应用程序的更新安装

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  7. Android小项目之九 两种上下文的区别

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  8. Android小项目之八 界面细节

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  9. Android小项目之五 splash动画效果

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

随机推荐

  1. hdu 1045 Fire Net(最小覆盖点+构图(缩点))

    http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit:1000MS     Memory Limit:32768KB   ...

  2. python 前向引用

    即函数调用在函数定义之前 可以这样 def bbb(): print('this is b') aaa() def aaa(): print('this is a') bbb() ---------& ...

  3. 使用UIGestureRecognizer监听屏幕事件

    转载自  http://blog.csdn.net/samguoyi/article/details/7911499 如果只是想获取屏幕点击事件有一个最简单的办法,就是写一个透明的uibutton覆盖 ...

  4. Codeforces 219D. Choosing Capital for Treeland (树dp)

    题目链接:http://codeforces.com/contest/219/problem/D 树dp //#pragma comment(linker, "/STACK:10240000 ...

  5. java dbcp连接池的使用

    package com.jb.jubmis.comm; import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQL ...

  6. 命令行解析getopt_long

    getopt_long函数可以轻松的解析main函数的命令行参数. int getopt_long(int argc,char * const argv[],const char *optstring ...

  7. 使用IBatisNet的网站,修改database.config无效的问题解决

    这周五去客户那更新了一个使用了IBatisNet的Web项目,备份了项目.数据库之后,替换更新的文件(含bin目录)却报数据库连接错. 因为是接手的一个维护项目,加上交接有点问题,所以遇到问题只能自己 ...

  8. OC:NSmuber、NSString 的互转

    NSmuber 转化为 IOS 中的 NSString 假设现有一NSNumber的变量A,要转换成NSString类型的B 方法如下: NSNumberFormatter* numberFormat ...

  9. iPhone中国移动收不到彩信,联通不用设置都可以,具体设置方法:

    打开“设置”. 打开“通用”. 打开“蜂窝移动网络”. 打开“蜂窝数据移动网络”. 在“蜂窝移动数据”一栏中的“APN”处填入“cmnet”. 在“彩信”一栏中的“APN”处填入“cmnet”,“MM ...

  10. Java的初步认识

    PS:弥补那些错过的时间,弥补那些本是决定做而没有做的事情,当初说好了学习编程要把自己学到的或是理解的写到博客中记录下来,可是由于各种缘由最终是没有实现...经过几番周折决定把那些丢掉的重新捡起来.对 ...