編輯:關於Android編程


1.基本思路
①.創建已加鎖應用的數據庫(字段:_id,packagename),如果應用已加鎖,將加鎖應用的包名維護到數據庫中
②.已加鎖+未加鎖 == 手機中所有應用(AppInfoProvider)
2.已加鎖和未加鎖的數據適配器
class MyAdapter extends BaseAdapter{
private boolean isLock;
/**
* @param isLock 用於區分已加鎖和未加鎖應用的標示 true已加鎖數據適配器 false未加鎖數據適配器
*/
public MyAdapter(boolean isLock) {
this.isLock = isLock;
}
@Override
public int getCount() {
if(isLock){
tv_lock.setText("已加鎖應用:"+mLockList.size());
return mLockList.size();
}else{
tv_unlock.setText("未加鎖應用:"+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) {
//添加動畫效果,動畫默認是非阻塞的,所以執行動畫的同時,動畫以下的代碼也會執行
animationView.startAnimation(mTranslateAnimation);//500毫秒
//對動畫執行過程做事件監聽,監聽到動畫執行完成後,再去移除集合中的數據,操作數據庫,刷新界面
mTranslateAnimation.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
//動畫開始的是調用方法
}
@Override
public void onAnimationRepeat(Animation animation) {
//動畫重復時候調用方法
}
//動畫執行結束後調用方法
@Override
public void onAnimationEnd(Animation animation) {
if(isLock){
//已加鎖------>未加鎖過程
//1.已加鎖集合刪除一個,未加鎖集合添加一個,對象就是getItem方法獲取的對象
mLockList.remove(appInfo);
mUnLockList.add(appInfo);
//2.從已加鎖的數據庫中刪除一條數據
mDao.delete(appInfo.packageName);
//3.刷新數據適配器
mLockAdapter.notifyDataSetChanged();
}else{
//未加鎖------>已加鎖過程
//1.已加鎖集合添加一個,未加鎖集合移除一個,對象就是getItem方法獲取的對象
mLockList.add(appInfo);
mUnLockList.remove(appInfo);
//2.從已加鎖的數據庫中插入一條數據
mDao.insert(appInfo.packageName);
//3.刷新數據適配器
mUnLockAdapter.notifyDataSetChanged();
}
}
});
}
});
return convertView;
}
}
MyAdapter
mLockAdapter = new MyAdapter(true);
lv_lock.setAdapter(mLockAdapter);
mUnLockAdapter = new MyAdapter(false);
lv_unlock.setAdapter(mUnLockAdapter);
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
Android學習教程之圖片毛玻璃效果(4)
本教程為大家分享了Android毛玻璃效果的具體代碼,供大家參考,具體內容如下BlurimageActivity.java代碼:package com.siso.craz
Android應用中ListView利用OnScrollListener分頁加載數據
當用戶從網絡上讀取微薄的時候,如果一下子全部加載用戶未讀的微薄這將耗費比較長的時間,造成不好的用戶體驗,同時一屏的內容也不足以顯示如此多的內容。這時候,我們就需要用到另一
android6.0 Activity(三) Activity與WMS通信過程
Activity在窗口和ViewRootImpl創建後會請求WMS創建一個連接,請求WMS為其創建一個WindowState對象用來描述窗口狀態。Activity與WMS
android程序開發——事件分發機制
1.android布局層次在我們的布局之上還存在四層布局, 所以我們應該減少布局的嵌套2.事件分發Android 中與 Touch 事件相關的方法包括:dispatchT