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 圖文詳解Binder進(jìn)程通信底層原理
Android系統(tǒng)中,多進(jìn)程間的通信都是依賴于底層Binder IPC機(jī)制,Binder機(jī)制是一種RPC方案。例如:當(dāng)進(jìn)程A中的Activity與進(jìn)程B中的Service通信時(shí),就使用了binder機(jī)制2021-10-10
Android 通知使用權(quán)(NotificationListenerService)的使用
這篇文章主要介紹了Android 通知使用權(quán)(NotificationListenerService)的使用的相關(guān)資料,需要的朋友可以參考下2017-06-06
Android實(shí)現(xiàn)的仿淘寶購(gòu)物車demo示例
這篇文章主要介紹了Android實(shí)現(xiàn)的仿淘寶購(gòu)物車demo示例,結(jié)合實(shí)例形式分析了Android購(gòu)物車的功能、布局及邏輯實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-07-07
基于Vert.x和RxJava 2構(gòu)建通用的爬蟲框架的示例
這篇文章主要介紹了基于Vert.x和RxJava 2構(gòu)建通用的爬蟲框架的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Java和Android的LRU緩存及實(shí)現(xiàn)原理
本文主要介紹 Java和Android的LRU緩存及實(shí)現(xiàn)原理,這里整理了詳細(xì)的資料,有興趣的小伙伴可以參考下便于學(xué)習(xí)理解2016-08-08
Android音頻編輯之音頻轉(zhuǎn)換PCM與WAV
這篇文章主要為大家詳細(xì)介紹了Android音頻編輯之音頻轉(zhuǎn)換PCM與WAV,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Android實(shí)現(xiàn)圖片文字識(shí)別
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圖片文字識(shí)別,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Android中使用Gradle來(lái)構(gòu)建App項(xiàng)目的入門指南
Gradle是Java世界中一個(gè)高人氣自動(dòng)化構(gòu)建工具,在安卓開發(fā)領(lǐng)域同樣備受追捧,這里為大家?guī)?lái)Android中使用Gradle來(lái)構(gòu)建App項(xiàng)目的入門指南,來(lái)看看Gradle的作用與基本結(jié)構(gòu).2016-06-06

