当前位置: 移动技术网 > IT编程>移动开发>Android > Android 开发程序锁应用简单实例

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

平乡找工作,请为我摘星星,朴寒星

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

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网