欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-03-03 21:48:37
1.基本思路 ①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中 ②.已加锁+未加锁 == 手机...

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

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