android手機衛(wèi)士-09程序鎖流量統(tǒng)計_第1頁
android手機衛(wèi)士-09程序鎖流量統(tǒng)計_第2頁
android手機衛(wèi)士-09程序鎖流量統(tǒng)計_第3頁
android手機衛(wèi)士-09程序鎖流量統(tǒng)計_第4頁
android手機衛(wèi)士-09程序鎖流量統(tǒng)計_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、寶貴建議請發(fā)送至:wangz-編程,始于Android 課程同步筆記Beta 0.01 版By衛(wèi)士-09 程序鎖Android在衛(wèi)士的功能列表界面打開高級工具菜單,在高級工具中添加程序鎖功能(如下圖所示)。點擊進入程序鎖功能主界面(如下圖所示)。在上圖界面未加鎖中,點擊“鎖”,那么該條目中的程序就自動會添加到已加鎖列表,同時該條目被移除掉,在1移除的時候會有一個向右滑動的動畫效果。同樣的,在已加鎖界面點擊會出現(xiàn)類似的效果。布該界面的布局其實比較簡單,整體是一個 vertical 的 LinearLayout,里面其實嵌套了 3 個 LinearLayout,A、B和 C , C 沒有 顯示出來

2、 是因為 B 和 C 是互 斥的兩個 LinearLayout ,當 當前是未 加鎖狀 態(tài)時, B 的android:visibility=visible,C 的 android:visibility=gone,當當前是已加鎖狀態(tài)時,B 和 C的 visibility 屬相則分別為隱藏和顯示。布局文件名 applock_activity.xml,布局如下所示:2LinearLayout android:layout_width=match_parent android:layout_height=wrap_contentTextViewandroid:id=+id/tv_lock androi

3、d:layout_width=wrap_content android:layout_height=wrap_content android:background=drawable/tab_right_default android:gravity=centerandroid:text=已加鎖android:textColor=# /:程序鎖涉及到的知識點如下,這些知識點的使用方法在代碼中都會出現(xiàn)。1)刪除 ListView 中條目時添加動畫效果2)OpenHelper 的使用3)ListView 的進一步使用4務(wù)代的實1.4.1 com.itheima.mobileSafe.activity

4、.AppLockActivity 代碼5public class AppLockActivity extendivity implements OnClickListener /已加鎖private TextView tv_lock;/未加鎖private TextView tv_unlock;/已加鎖線性布局privainearLayout ll_lock;/未加鎖線性布局privainearLayout ll_unlock;/已加鎖 ListViewprivaistView lv_lock_list;/未加鎖 ListViewprivaistView lv_unlock_list;/應(yīng)用信

5、息privaist appInfos;/未加鎖應(yīng)用信息privaist unloackappInfos;/已加鎖應(yīng)用信息privaist lockedappInfos;private ApplockAdapter adapter;/顯示未加鎖個數(shù)/添加動畫效果TranslateAnimation animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0,Animation.RELATIVE_TO

6、_SELF, 0); animation.setDuration(500); view.startAnimation(animation);private TextView tv_unlock_count;/顯示已加鎖個數(shù)private TextView tv_lock_count;/自定義的鎖privateprivate privateAppLock;ApplockAdapter lockAdapter;ApplockAdapter unlockAdapter;Overrideprotected void onCreate(Bundle savedInstane) super.onCreat

7、e(savedInstane);setContentView(R.layout.applock_activity);/初始化控件、集合、tv_lock =tv_unlock ll_lock = ll_unlock(TextView) findViewById(R.id.tv_lock);= (TextView) findViewById(R.id.tv_unlock); (LinearLayout) findViewById(R.id.ll_lock);= (LinearLayout) findViewById(R.id.ll_unlock);/已加鎖、未加鎖設(shè)置點擊事件 tv_lock.se

8、tOnClickListener(this); tv_unlock.setOnClickListener(this);lv_lock_list = (ListView) findViewById(R.id.lv_loack_list); lv_unlock_list = (ListView) findViewById(R.id.lv_unloack_list);/通過自定義的工具類獲取應(yīng)用信息appInfos = AppInfoProvider.getAllAppInfos(this);/給 ListView 設(shè)置適配器lv_unlock_list.setAdapter(adapter);tv

9、_lock_count =tv_unlock_count unloackappInfos(TextView) findViewById(R.id.tv_lock_count);= (TextView) findViewById(R.id.tv_unlock_count);= new ArrayList();lockedappInfos = new ArrayList();/= new AppLockfor(AppInfo info :find =if (find) (this);appInfos).find(info.getPackName();lockedappInfos.add(info)

10、;else unloackappInfos.add(info);unlockAdapter = new ApplockAdapter(true); lockAdapter = new ApplockAdapter(false); lv_unlock_list.setAdapter(unlockAdapter);6lv_lock_list.setAdapter(lockAdapter);private class ApplockAdapter extends BaseAdapter isFlag = true;/未加鎖privatepublic ApplockAdapter(this.isFla

11、g = isFlag;OverrideisFlag)publicgetCount() if (isFlag) tv_unlock_count.setText(未加鎖return unloackappInfos.size();else tv_lock_count.setText(已加鎖return lockedappInfos.size();(+unloackappInfos.size()+);(+lockedappInfos.size()+);Overridepublic Object getItem(return null;ition) Overridepublic long getItem

12、Id(return 0;ition) Overridepublic View getView( final View view; ViewHolder holder;ition, View convertView, ViewGroup parent)if (convertView != null) view = convertView;holder = (ViewHolder) view.getTag(); else view = View.inflate(AppLockActivity.this, R.layout.list_applock_item,null);holder = new V

13、iewHolder();holder.iv_icon =holder.tv_name =(ImageView) view.findViewById(R.id.iv_icon);(TextView) view.findViewById(R.id.tv_name);= (ImageView) view.findViewById(R.id.iv_sholder.iv_susus);7view.setTag(holder);final AppInfo appInfo;/判斷當前需要顯示的是已加鎖還是未加鎖if (isFlag) appInfo= unloackappInfos.get(ition);h

14、older.iv_selse us.setImageResource(R.drawable.lock);appInfo= lockedappInfos.get(ition);holder.iv_sus.setImageResource(R.drawable.unlock);holder.tv_name.setText(appInfo.getName(); holder.iv_icon.setImageDrawable(appInfo.getIcon();holder.iv_sus.setOnClickListener(new OnClickListener() canClick = true;

15、Overridepublic void onClick(View v) if (!canClick) return ;if (isFlag) /點擊未加鎖的 canClick = false;/添加動畫效果TranslateAnimation animation = newTranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF,1.0f,Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF,animation.setDuration(5

16、00); view.startAnimation(animation);.add(appInfo.getPackName(); unloackappInfos.remove(appInfo); lockedappInfos.add(appInfo);new Handler().tDelayed(new Runnable() 0);Overridepublic void run() lockAdapter.notifyDataSetChanged(); unlockAdapter.notifyDataSetChanged(); canClick = true;, 500);else /點擊加鎖的

17、 canClick = false;TranslateAnimation animation = new8TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF,-1.0f,Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF,animation.setDuration(500); view.startAnimation(animation);.delete(appInfo.getPackName(); lockedappInfos.r

18、emove(appInfo); unloackappInfos.add(appInfo);new Handler().tDelayed(new Runnable() 0);Overridepublic void run() lockAdapter.notifyDataSetChanged(); unlockAdapter.notifyDataSetChanged();canClick=true;, 500););return view;sic class ViewHolder ImageView iv_icon; TextView tv_name;ImageView iv_sus;/切換兩個

19、LinearLayout Overridepublic void onClick(View v) switch (v.getId() case R.id.tv_unlock: tv_unlock.setBackgroundResource(R.drawable.tab_left_pressed); tv_lock.setBackgroundResource(R.drawable.tab_right_default); ll_unlock.setVisibility(View.VISIBLE); ll_lock.setVisibility(View.GONE);break;case R.id.t

20、v_lock: tv_lock.setBackgroundResource(R.drawable.tab_right_pressed);91.4.2 com.itheima.mobileSafe.db.AppLock代碼在 1.4.1 代碼中,加鎖的程序在Database 中,因此在層目錄結(jié)構(gòu)下創(chuàng)建了AppLock類,該類提供了程序鎖信息的 CRUD 方法,其代碼如下:10public class AppLockprivate AppLockOpenHelper openHelper;private Context context;public AppLock(Context context)

21、 this.context = context;openHelper = new AppLockOpenHelper(context);/*param numberparam m*/public void add(String number) Uri uri = Uri.parse(.itheima.mobileSafe.dbchange); context.getContentResolver().notifyChange(uri, null);Database database = openHelper.getWritableDatabase(); ContentValues values

22、 = new ContentValues(); values.put(packname, number);database.insert(applock, null, values); database.close();public void delete(String number) Database database = openHelper.getWritableDatabase(); database.delete(applock, packname=?, new String number );tv_unlock.setBackgroundResource(R.drawable.ta

23、b_left_default); ll_lock.setVisibility(View.VISIBLE); ll_unlock.setVisibility(View.GONE);break;database.close();public void update(String number, String model) SQLiteDatabase database = openHelper.getWritableDatabase(); ContentValues values = new ContentValues();database.update(applock, values, pack

24、name=?, new String number ); database.close();public boolean find(String number) SQLiteDatabase database = openHelper.getReadableDatabase();Cursor query = database.query(applock, null, packname=?, new String number , null, null, null); if (query.moveToNext() database.close();return true; else databa

25、se.close();return false;public List findAll() SQLiteDatabase database = openHelper.getReadableDatabase(); List list = new ArrayList();Cursor cursor = database.query(applock, new String packname , null, null, null, null, null);while (cursor.moveToNext() String packname = cursor.getString(0); list.add

26、(packname);cursor.close(); database.close(); return list;public int getTotal() int total = 0;SQLiteDatabase database = openHelper.getReadableDatabase();Cursor cursor = database.rawQuery(select count(*) from applock , null); if (cursor.moveToNext() total = cursor.getInt(0);111.4.3 com.itheima.mobileS

27、afe.db.AppLockOpenHelper 代碼2. 不在最近任務(wù)列表顯示 Activity()長按Home 鍵,會列出最近任務(wù)列表中所有的 Activity(如下圖所示),如果不想讓的某個 Activity出現(xiàn)在任務(wù)列表中,那么這時候就需要給的 Activity 額外配置一些信息了。在 AndroidManifest.xml 的 Activity 節(jié)點中添加如下屬性:12public class AppLockOpenHelper extendsOpenHelper public AppLockOpenHelper(Context context) super(context, app

28、lock.db, null, 1);Overridepublic void onCreate(Database db) String sql = create table applock(_idegrimary key autoincrement,packname varchar(20);db.execSQL(sql);Overridepublic void onUpgrade(Database db,oldVer,newVer) cursor.close(); database.close(); return total;:上面的功能在 Android4.0 版本以后才添加的,在老版本中無此功能。3. 流量統(tǒng)計簡介()Android 系統(tǒng)將各個進程使用的流量信息在/proc/uid_s文件中,通過這個文件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論