首页 > 系统 > Android > 正文

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

2019-12-12 05:00:11
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表