软件编程
位置:首页>> 软件编程>> Android编程>> Android 开发程序锁应用简单实例

Android 开发程序锁应用简单实例

作者:lqh  发布时间:2021-10-07 07:41:34 

标签:Android,程序锁

Android 开发程序锁应用简单实例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);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com