Android 开发程序锁应用简单实例
程序员文章站
2024-03-03 21:48:37
1.基本思路
①.创建已加锁应用的数据库(字段:_id,packagename),如果应用已加锁,将加锁应用的包名维护到数据库中
②.已加锁+未加锁 == 手机...
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);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: 基于Android实现3D翻页效果