现在来介绍一下具体的开发过程。
首先是主界面,肯定是先写主界面的activity_layout.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_height="match_parent" androID:layout_wIDth="match_parent" androID:background="#000"> <GrIDVIEw androID:ID="@+ID/grIDvIEw" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:columnWIDth="80dp" androID:stretchMode="spacingWIDthUniform" androID:numColumns="2"/></linearLayout>
在这里用到了GrIDVIEw,
androID:stretchMode="spacingWIDthUniform" 既拉伸元素间距又拉伸它们间隔
这只是一个整体布局,里面只有一个GrIDVIEw,我们想让它包含我们想要完成的所有功能的图标,显示给用户,然后让用户去选择使用哪个功能。所以我们的GrIDVIEw_item.xml里面就只有两个内容,既图标和lable。下面是GrIDVIEw_item.xml
<?xml version="1.0" enCoding="utf-8"?><linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" androID:orIEntation="vertical" androID:layout_gravity="center" androID:layout_wIDth="match_parent" androID:layout_height="match_parent"> <ImageVIEw androID:ID="@+ID/img" androID:layout_wIDth="60dp" androID:layout_height="60dp" androID:layout_margintop="10dp" androID:src="@drawable/ic_launcher"/> <TextVIEw androID:ID="@+ID/text" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_margintop="2dp" androID:layout_gravity="center" androID:textcolor="#FFF" androID:text="文字"/></linearLayout>
好了,现在主界面我们已经做完了,然后开始写主界面的实现逻辑。我们是一个功能一个功能的完成的,所以部分功能先简单的写下点击后显示一个Toast。MainActivity.java
package com.yangmiaoqing.example.myassitant;import androID.Manifest;import androID.app.Activity;import androID.app.Dialog;import androID.content.Intent;import androID.content.pm.PackageManager;import androID.support.v4.app.ActivityCompat;import androID.support.v4.content.ContextCompat;import androID.support.v7.app.AlertDialog;import androID.support.v7.app.AppCompatActivity;import androID.os.Bundle;import androID.util.Log;import androID.vIEw.VIEw;import androID.vIEw.Window;import androID.Widget.AdapterVIEw;import androID.Widget.GrIDVIEw;import androID.Widget.SimpleAdapter;import androID.Widget.Toast;import com.yangmiaoqing.example.myassitant.R;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity implements ActivityCompat.OnRequestPermissionsResultCallback{ private GrIDVIEw grIDVIEw; private SimpleAdapter adapter; private List<Map<String,Object>> dataList; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); // requestwindowFeature(Window.FEATURE_NO_Title); if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED &&ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.CALL_PHONE},1); }else { Intent intent=new Intent(MainActivity.this,blackNumService.class); startService(intent); } grIDVIEw=(GrIDVIEw)findVIEwByID(R.ID.grIDvIEw); initData(); String from[]={"img","text"}; int[] to={R.ID.img,R.ID.text}; adapter=new SimpleAdapter(this,dataList,R.layout.grIDvIEw_item,from,to); grIDVIEw.setAdapter(adapter); grIDVIEw.setonItemClickListener(new AdapterVIEw.OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> adapterVIEw, VIEw vIEw, int i, long l) { switch (i){ case 0: AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示").setMessage(dataList.get(i).get("text").toString()).create().show(); break; case 1: AlertDialog.Builder builder1=new AlertDialog.Builder(MainActivity.this); builder1.setTitle("提示").setMessage(dataList.get(i).get("text").toString()).create().show(); break; case 2: Intent intent=new Intent(MainActivity.this,blackList_Activity.class); startActivity(intent); break; case 3: AlertDialog.Builder builder3=new AlertDialog.Builder(MainActivity.this); builder3.setTitle("提示").setMessage(dataList.get(i).get("text").toString()).create().show(); break; case 4: Intent intent1=new Intent(MainActivity.this,AppManagerActivity.class); startActivity(intent1); break; case 5: Intent intent2=new Intent(MainActivity.this,ProgressManagerActivity.class); startActivity(intent2); break; } } }); //getSupportActionbar().hIDe(); } voID initData(){ int icon[]={R.drawable.data,R.drawable.lock,R.drawable.phone,R.drawable.set,R.drawable.softmanage,R.drawable.task}; String name[]={"流量监测","程序锁","通讯卫士","设置","软件管理","任务管理"}; dataList=new ArrayList<Map<String, Object>>(); for(int i=0;i<icon.length;i++){ Map<String,Object> map=new HashMap<String,Object>(); map.put("img",icon[i]); map.put("text",name[i]); dataList.add(map); } } @OverrIDe public voID onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResult){ switch (requestCode){ case 1: if(grantResult.length>0&&grantResult[0]==PackageManager.PERMISSION_GRANTED){ Intent intent=new Intent(MainActivity.this,blackNumService.class); startService(intent); }else if(grantResult.length>0&&grantResult[0]==PackageManager.PERMISSION_DENIED) { Log.e("MainActivity","拒绝了使用电话权限"); AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setTitle("提示").setMessage("您拒绝了使用电话权限,请到相关设置中设置").create().show(); } } }}
关于Simpleadapter,参数详解
context 当前视图所关联的且正在使用的适配器所处的上下文对象
data 一个Map型列表。列表中的每个条目对应于列表中的一行。Map中包含每一行的数据,并且包括所有的条目(其被详细说明在数据源处)把data理解成将要装载的数据即可
resourse 一个VIEw布局的资源标记,其定义了布局中的列表项,布局文件至少包含那些需要展示的视图项,就是想要加载的布局
form 列名的列表,其在Map中对应着每一项数据item,就是Map中的资源数组对应的键值,map中的键值是唯一的。
to 就是想要加载到什么地方
在MainActivity.java中还有为通讯卫士动态申请权限的代码,稍后解释
总结一下,主界面主要是由GrIDVIEw来完成的,首先是建一个父xml,包含GrIDVIEw,然后建立GrIDVIEw子项布局。然后在java代码中为GrIDVIEw添加一个Simpleadapter,并为Simpleadapter配置数据。最后为每一个GrIDVIEw子项添加触发事件。
最后说下,所有功能的入口都在这里,以后只介绍每个功能是如何实现的。
总结以上是内存溢出为你收集整理的基于android的手机安全卫士的实现心得三全部内容,希望文章能够帮你解决基于android的手机安全卫士的实现心得三所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)