zoukankan      html  css  js  c++  java
  • Android项目 手机安全卫士(代码最全,注释最详细)之十一 应用程序的主界面


    ------- 源自梦想永远是你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事业的好友、只是勇敢地说出我学到! ----------



  • 相关阅读:
    微信小程序,搜索结果关键词高亮 wxml不能动态识别html标签
    关于vue 全局loading方案
    element ui树样式问题
    Promise.all( ) 的使用
    关于form表单校验问题
    vue 异步改同步 获取结果 动态函数
    1.关于数据for循环不要用index作为key,2.面二次刷新404问题(空白) 的探讨 3. vue图片上传
    element ui点击切换皮肤
    关于element ui input、以及button样式不能覆盖的解决办法(登录页面)
    vue版本根据当前路由匹配到根父节点并且激活
  • 原文地址:https://www.cnblogs.com/riskyer/p/3329001.html
Copyright © 2011-2022 走看看