Android 開發程式鎖應用簡單一實例_Android

來源:互聯網
上載者:User

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);

感謝閱讀,希望能協助到大家,謝謝大家對本站的支援!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.