Android 开发程序锁应用简单实例
作者:lqh 发布时间:2021-10-07 07:41:34
标签: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);
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


猜你喜欢
- 一、前言最近自己在学习Spring boot的过程中开发了一个组件 multithreadpool-spring-boot-starter,
- 一、简单介绍Unity 游戏实例开发集合,使用简单易懂的方式,讲解常见游戏的开发实现过程,方便后期类似游戏开发的借鉴和复用。本节介绍,Fly
- 最近因为项目的国际化的需要,需要对整个项目的100来个插件做国际化,这是一件痛苦的事情,因为纯体力劳动。为了省点工作量,想着能不能写个程序批
- 关于MouseWheelListener的鼠标滚轮事件Java中JPanel面板中对鼠标滚轮事件的处理。一、MouseWheelListen
- Java设计模式访问者模式模式概念访问者模式表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的
- 在自然语言处理(NLP)研究中,NGram是最基本但也是最有用的一种比对方式,这里的N是需要比对的字符串的长度,而今天我介绍的TrieTre
- Double显示转换int static void Main(string[] args) { Console.WriteLine(&quo
- 一、volatile关键字介绍及底层原理1.volatile的特性(内存语义)当一个变量被定义成volatile之后,它将具备两项特性:第一
- 一,SQL注入–1,需求–1,利用jdbc查询user的信息,如果信息正确就登录,否则提示错误–1,创建user表,指定字段id name
- SpringBoot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。默认提供了Java Util Logging
- 一、 java文件中获得路径Thread.currentThread().getContextClassLoader().getResour
- 前言安卓6.0之后,一些敏感权限需要进行动态请求,虽说编写请求授权代码并不难,但是每次一需要权限就需要在视图中添加一段代码,严重影响代码美观
- 本文实例为大家分享了ExpandableListView二级分栏效果的具体代码,供大家参考,具体内容如下对ExpandableListVie
- 在文件夹中,我们经常有类似s_1.txt、s_2.txt、s_10.txt、s_11.txt这样的命名方式,我们期望的排序方式是s_1.tx
- 继承(加上封装和多态性)是面向对象的编程的三个主要特性(也称为“支柱”)之一。 继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。其
- 前言这段时间在学习Spring,依赖注入DI和面向切面编程AOP是Spring框架最核心的部分。这次主要是总结依赖注入的bean的装配方式。
- 线程安全解决方案synchronized,ReentrantLock,Atomic 使用场景描述在实际开发过程中如果服务量,请求频繁,就会经
- 给TextureView添加边框(专业名词为描边),有三种解决方案:1.设置一个9 patch 的,右边框,中间是空的PNG。2.自定义一个
- 完美地模仿了2048游戏,是根据网友的一个2048改的。Block.javaimport javax.swing.*;import java
- 目录IO简介1.流Stream 2.IO流的继承结构3 File文件类3.1概述3.2创建对象3.3常用方法 3.4 练