Android 手机卫士10--应用管理器

1.添加不同类型条目

 1 class MyAdapter extends BaseAdapter{
 2
 3     //获取数据适配器中条目类型的总数,修改成两种(纯文本,图片+文字)
 4     @Override
 5     public int getViewTypeCount() {
 6         return super.getViewTypeCount()+1;
 7     }
 8
 9     //指定索引指向的条目类型,条目类型状态码指定(0(复用系统),1)
10     @Override
11     public int getItemViewType(int position) {
12         if(position == 0 || position == mCustomerList.size()+1){
13             //返回0,代表纯文本条目的状态码
14             return 0;
15         }else{
16             //返回1,代表图片+文本条目状态码
17             return 1;
18         }
19     }
20
21     //listView中添加两个描述条目
22     @Override
23     public int getCount() {
24         return mCustomerList.size()+mSystemList.size()+2;
25     }
26
27     @Override
28     public AppInfo getItem(int position) {
29         if(position == 0 || position == mCustomerList.size()+1){
30             return null;
31         }else{
32             if(position<mCustomerList.size()+1){
33                 return mCustomerList.get(position-1);
34             }else{
35                 //返回系统应用对应条目的对象
36                 return mSystemList.get(position - mCustomerList.size()-2);
37             }
38         }
39     }
40
41     @Override
42     public long getItemId(int position) {
43         return position;
44     }
45
46     @Override
47     public View getView(int position, View convertView, ViewGroup parent) {
48         int type = getItemViewType(position);
49
50         if(type == 0){
51             //展示灰色纯文本条目
52             ViewTitleHolder holder = null;
53             if(convertView == null){
54                 convertView = View.inflate(getApplicationContext(), R.layout.listview_app_item_title, null);
55                 holder = new ViewTitleHolder();
56                 holder.tv_title = (TextView)convertView.findViewById(R.id.tv_title);
57                 convertView.setTag(holder);
58             }else{
59                 holder = (ViewTitleHolder) convertView.getTag();
60             }
61             if(position == 0){
62                 holder.tv_title.setText("用户应用("+mCustomerList.size()+")");
63             }else{
64                 holder.tv_title.setText("系统应用("+mSystemList.size()+")");
65             }
66             return convertView;
67         }else{
68             //展示图片+文字条目
69             ViewHolder holder = null;
70             if(convertView == null){
71                 convertView = View.inflate(getApplicationContext(), R.layout.listview_app_item, null);
72                 holder = new ViewHolder();
73                 holder.iv_icon = (ImageView)convertView.findViewById(R.id.iv_icon);
74                 holder.tv_name = (TextView)convertView.findViewById(R.id.tv_name);
75                 holder.tv_path = (TextView) convertView.findViewById(R.id.tv_path);
76                 convertView.setTag(holder);
77             }else{
78                 holder = (ViewHolder) convertView.getTag();
79             }
80             holder.iv_icon.setBackgroundDrawable(getItem(position).icon);
81             holder.tv_name.setText(getItem(position).name);
82             if(getItem(position).isSdCard){
83                 holder.tv_path.setText("sd卡应用");
84             }else{
85                 holder.tv_path.setText("手机应用");
86             }
87             return convertView;
88         }
89     }
90 }

2.常驻悬浮框使用

lv_app_list.setOnScrollListener(new OnScrollListener() {
	@Override
	public void onScrollStateChanged(AbsListView view, int scrollState) {
	}

	@Override
	public void onScroll(AbsListView view, int firstVisibleItem,
			int visibleItemCount, int totalItemCount) {
		//滚动过程中调用方法
		//AbsListView中view就是listView对象
		//firstVisibleItem第一个可见条目索引值
		//visibleItemCount当前一个屏幕的可见条目数
		//总共条目总数
		if(mCustomerList!=null && mSystemList!=null){
			if(firstVisibleItem>=mCustomerList.size()+1){
				//滚动到了系统条目
				tv_des.setText("系统应用("+mSystemList.size()+")");
			}else{
				//滚动到了用户应用条目
				tv_des.setText("用户应用("+mCustomerList.size()+")");
			}
		}

	}
});

3.activity_app_manager.xml

<FrameLayout
	android:layout_width="match_parent"
	android:layout_height="wrap_content">
	<ListView
		android:id="@+id/lv_app_list"
		android:layout_width="match_parent"
		android:layout_height="wrap_content">
	</ListView>
	<TextView
		android:background="#ccc"
		android:id="@+id/tv_des"
		android:textColor="#000"
		android:textSize="18sp"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"/>
</FrameLayout>

 

时间: 2024-10-10 15:24:49

Android 手机卫士10--应用管理器的相关文章

Android 手机卫士12--进程管理

1.本进程不能被选中,所以先将checkbox隐藏掉--手机卫士 不能自杀 if(getItem(position).packageName.equals(getPackageName())){ holder.cb_box.setVisibility(View.GONE); }else{ holder.cb_box.setVisibility(View.VISIBLE); } 2.清理选中进程 private void clearAll() { //1,获取选中进程 //2,创建一个记录需要杀死

手机卫士-10

手机卫士-10 课1 窗口小部件widget widget是什么? 阅读文档doc develop--->API Guides---->App Widgets linux命令ps:查看进程 kill+进程pid:杀掉进程 窗口小部件widget使用方法 创建widget测试 依照文档实现窗口小部件widget 创建widget窗口小部件的步骤 1.创建一个新的实现类:父类是AppWidgetProvider //1.写一个类继承 AppWidgetProvider //因为这个类是一个广播接收

Android 手机卫士--弹出对话框

在<Android 手机卫士--解析json与消息机制发送不同类型消息>一文中,消息机制发送不同类型的信息还没有完全实现,在出现异常的时候,应该弹出吐司提示异常,代码如下: private Handler mHandler = new Handler() { // public void handleMessage(android.os.Message msg) { switch (msg.what) { case UPDATE_VERSION: //弹出对话框,提示用户更新 //showUp

Android 手机卫士--确认密码对话框编写

本文接着实现“确认密码”功能,也即是用户以前设置过密码,现在只需要输入确认密码 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,转载请注明出处. 布局文件和<Android 手机卫士--设置密码对话框>中的布局基本类似,所有copy一下,修改一点细节就搞定: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:and

Android 手机卫士--签名文件说明&amp;包名说明

在<Android 手机卫士--打包生成apk维护到服务器>一文中,实现了新版本的apk到服务器,当打开客户端apk的时候,发现有新版本,提示更新.还实现了利用xutils工具实现了从服务器端下载apk 本文地址:http://www.cnblogs.com/wuyudong/p/5903484.html,转载请注明源地址. 本文实现下载本机apk的安装,过程很简单,参考<Android APK的安装> 代码如下: /** * 安装对应的apk * @param file 安装文件

Android 手机卫士--阶段小结1

本文地址:http://www.cnblogs.com/wuyudong/p/5904528.html,转载请注明源地址. 本文对之前手机卫士开发进行一个小结. 1.SplashActivity 版本名称的展示,从清单配置文件中获取版本名称,PackageManager 服务端新版本的检测(本地版本号<服务器版本号) 展示logo 2.手机防盗 sim卡绑定:每一款手机都会有相应的卡的序列号,一旦替换掉原有电话卡,序列号会发生改变 3.手机卫士分包 基础课程分包方式,每一个类包名, com.it

[android] 手机卫士手机实现短信指令获取位置

获取位置  新建一个service的包 新建一个GPSService类继承系统的Service类 清单文件中注册一下 重写onCreate()方法,服务创建的时候回调 重写onDestroy()方法,服务销毁的时候回调 把上一节的代码拿到这个地方来 得到用户移动后的最后一次的位置,保存到SP中 转换标准坐标为火星坐标,数据库文件放到assets目录下,把ModifyOffset.java放在service包下面 获取ModifyOffset对象,通过ModifyOffset.getInstanc

[android] 手机卫士手机定位的原理

手机定位的三种方式:网络定位,基站定位,GPS定位 网络定位,手机连上wifi 2g 3g的时候,手机会有一个ip,误差很大 基站定位,精确度与基站的多少有关,几十米到几公里的误差 GPS定位,至少需要三颗卫星才能定位,在空旷的地方准确 手机使用A-GPS需要网络来辅助定位,定位速度快,网络记录了上次的卫星轨道, 获取LocationManager对象,通过getSystemService(LOCATION_SERVICE) 调用LocationManager对象的requestLocation

使用Android服务,实现报警管理器和广播接收器

介绍 几乎在所有平台上都有很多进程运行背景,它们被称为服务.可能在Android平台中有一些服务可以执行长时间运行的操作,这些操作在处理时不需要用户交互. 在本文中,借助预定义的Android警报服务,我们将创建一个应用程序,在所需的时间间隔内将电话模式更改为振动模式.除此之外,我们将编写自己的Service类并在特定时间调用它.此外,此演示应用程序将回答以下问题: 如何使用Alarm Manager? 如何通过Alarm Manager启动Intent? 如何使用BroadcastReceiv