Android 開發(fā)程序鎖應(yīng)用簡(jiǎn)單實(shí)例
1.基本思路
①.創(chuàng)建已加鎖應(yīng)用的數(shù)據(jù)庫(kù)(字段:_id,packagename),如果應(yīng)用已加鎖,將加鎖應(yīng)用的包名維護(hù)到數(shù)據(jù)庫(kù)中
②.已加鎖+未加鎖 == 手機(jī)中所有應(yīng)用(AppInfoProvider)
2.已加鎖和未加鎖的數(shù)據(jù)適配器
class MyAdapter extends BaseAdapter{ private boolean isLock; /** * @param isLock 用于區(qū)分已加鎖和未加鎖應(yīng)用的標(biāo)示 true已加鎖數(shù)據(jù)適配器 false未加鎖數(shù)據(jù)適配器 */ public MyAdapter(boolean isLock) { this.isLock = isLock; } @Override public int getCount() { if(isLock){ tv_lock.setText("已加鎖應(yīng)用:"+mLockList.size()); return mLockList.size(); }else{ tv_unlock.setText("未加鎖應(yīng)用:"+mUnLockList.size()); return mUnLockList.size(); } } @Override public AppInfo getItem(int position) { if(isLock){ return mLockList.get(position); }else{ return mUnLockList.get(position); } } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView == null){ convertView = View.inflate(getApplicationContext(), R.layout.listview_islock_item, null); holder = new ViewHolder(); holder.iv_icon = (ImageView) convertView.findViewById(R.id.iv_icon); holder.tv_name = (TextView) convertView.findViewById(R.id.tv_name); holder.iv_lock = (ImageView) convertView.findViewById(R.id.iv_lock); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } final AppInfo appInfo = getItem(position); final View animationView = convertView; holder.iv_icon.setBackgroundDrawable(appInfo.icon); holder.tv_name.setText(appInfo.name); if(isLock){ holder.iv_lock.setBackgroundResource(R.drawable.lock); }else{ holder.iv_lock.setBackgroundResource(R.drawable.unlock); } holder.iv_lock.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //添加動(dòng)畫效果,動(dòng)畫默認(rèn)是非阻塞的,所以執(zhí)行動(dòng)畫的同時(shí),動(dòng)畫以下的代碼也會(huì)執(zhí)行 animationView.startAnimation(mTranslateAnimation);//500毫秒 //對(duì)動(dòng)畫執(zhí)行過(guò)程做事件監(jiān)聽,監(jiān)聽到動(dòng)畫執(zhí)行完成后,再去移除集合中的數(shù)據(jù),操作數(shù)據(jù)庫(kù),刷新界面 mTranslateAnimation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { //動(dòng)畫開始的是調(diào)用方法 } @Override public void onAnimationRepeat(Animation animation) { //動(dòng)畫重復(fù)時(shí)候調(diào)用方法 } //動(dòng)畫執(zhí)行結(jié)束后調(diào)用方法 @Override public void onAnimationEnd(Animation animation) { if(isLock){ //已加鎖------>未加鎖過(guò)程 //1.已加鎖集合刪除一個(gè),未加鎖集合添加一個(gè),對(duì)象就是getItem方法獲取的對(duì)象 mLockList.remove(appInfo); mUnLockList.add(appInfo); //2.從已加鎖的數(shù)據(jù)庫(kù)中刪除一條數(shù)據(jù) mDao.delete(appInfo.packageName); //3.刷新數(shù)據(jù)適配器 mLockAdapter.notifyDataSetChanged(); }else{ //未加鎖------>已加鎖過(guò)程 //1.已加鎖集合添加一個(gè),未加鎖集合移除一個(gè),對(duì)象就是getItem方法獲取的對(duì)象 mLockList.add(appInfo); mUnLockList.remove(appInfo); //2.從已加鎖的數(shù)據(jù)庫(kù)中插入一條數(shù)據(jù) mDao.insert(appInfo.packageName); //3.刷新數(shù)據(jù)適配器 mUnLockAdapter.notifyDataSetChanged(); } } }); } }); return convertView; } } MyAdapter
mLockAdapter = new MyAdapter(true); lv_lock.setAdapter(mLockAdapter); mUnLockAdapter = new MyAdapter(false); lv_unlock.setAdapter(mUnLockAdapter);
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Android中Socket的應(yīng)用分析
- Android 適配器模式應(yīng)用及設(shè)計(jì)原理
- Android Back鍵點(diǎn)擊兩次退出應(yīng)用詳解及實(shí)現(xiàn)方法總結(jié)
- Android應(yīng)用創(chuàng)建桌面快捷方式代碼
- sweet alert dialog 在android studio應(yīng)用問(wèn)題說(shuō)明詳解
- Android6.0 Launcher2應(yīng)用解析
- Android自定義狀態(tài)欄顏色與應(yīng)用標(biāo)題欄顏色一致
- Android 應(yīng)用中插入廣告的實(shí)例
- 分析Android中應(yīng)用的啟動(dòng)流程
- Android 重力傳感器在游戲開發(fā)中的應(yīng)用
- Android 應(yīng)用中插入廣告詳解及簡(jiǎn)單實(shí)例
相關(guān)文章
Android編程之點(diǎn)擊按鈕的響應(yīng)方式小結(jié)【3種方式】
這篇文章主要介紹了Android編程之點(diǎn)擊按鈕的響應(yīng)方式,結(jié)合實(shí)例形式分析總結(jié)了常用的三種按鈕響應(yīng)方式,需要的朋友可以參考下2017-02-02Android 類似UC瀏覽器的效果:向上滑動(dòng)地址欄隱藏功能
這篇文章主要介紹了Android 類似UC瀏覽器的效果:向上滑動(dòng)地址欄隱藏功能,需要的朋友可以參考下2017-12-12Android實(shí)現(xiàn)ViewPage輪播圖效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)ViewPage輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Android實(shí)現(xiàn)動(dòng)態(tài)添加數(shù)據(jù)與堆疊折線圖詳解流程
堆疊折線圖是折線圖的一種,堆積折線圖用于顯示每一數(shù)值所占大小隨時(shí)間或有序類別而變化的趨勢(shì),可能顯示數(shù)據(jù)點(diǎn)以表示單個(gè)數(shù)據(jù)值,也可能不顯示這些數(shù)據(jù)點(diǎn)。堆疊折線圖中,類別數(shù)據(jù)沿水平軸均勻分布,所有值數(shù)據(jù)沿垂直軸均勻分布2021-10-10AndroidStudio集成OpenCV的實(shí)現(xiàn)教程
本文主要介紹了Android?Studio集成OpenCV的實(shí)現(xiàn)教程,文中通過(guò)圖文介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12實(shí)現(xiàn)Android 滑動(dòng)退出Activity的功能
這篇文章主要介紹了實(shí)現(xiàn)Android 滑動(dòng)退出Activity的功能的相關(guān)資料,這里提供實(shí)例來(lái)說(shuō)明滑動(dòng)退出應(yīng)用程序的實(shí)現(xiàn)代碼,需要的朋友可以參考下2017-08-08Android監(jiān)聽電池狀態(tài)實(shí)例代碼
這篇文章給大家介紹Android監(jiān)聽電池狀態(tài)實(shí)例代碼,對(duì)android監(jiān)聽電池狀態(tài)相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03Android自定義DataGridView數(shù)據(jù)表格控件
這篇文章主要介紹了Android自定義DataGridView數(shù)據(jù)表格控件的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Android之ImageSwitcher的實(shí)例詳解
這篇文章主要介紹了Android之ImageSwitcher的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家理解這個(gè)控件的功能,希望能幫助到大家,需要的朋友可以參考下2017-08-08