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

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


十一、应用程序的主界面

之前的完成以后,用户每次打开都会有更新提醒,这样对于用户来说是很烦的。用户体验就不是特别好了。
因此我们需要这样一个选项,在用户选择关闭更新提醒的时候,就不会显示提醒,直接进入主界面。

设置中心》设置。。。

下面先做下主界面(LinearLayout):
1.标题:
具体代码:
    <TextViewstyle="@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方法具体代码:
@Overridepublic 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事业的好友、只是勇敢地说出我学到! ----------

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. Service生命周期(Android)
  3. 如果Android系统被收回
  4. Android(安卓)根据EditText搜索框ListView动态显示数据
  5. 写了一个基于WiFi 的 Android(安卓)手机文件管理程序
  6. Android开发问题之布局(layout)文件图形界面不能显示
  7. Android(安卓)毛玻璃效果实现(Glide)
  8. 最佳的免费移动设备的原型模板文件下载
  9. Android(安卓)程序的反破解技术

随机推荐

  1. Android中的 View绘制流程及事件分发
  2. Android打开系统设置界面
  3. android-性能优化之merge
  4. android studio系列之使用指南
  5. Android 支付宝App支付集成
  6. Android 分页组件
  7. android反编译与加固(Mac版)
  8. Android常见布局简述
  9. Android中文文档v0.1 beta低调发布,期待
  10. Android可收缩/扩展的TextView【2】