android147 360 程序锁fragment

   

package com.itheima.mobileguard.fragment;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.itheima.mobileguard.R;
import com.itheima.mobileguard.db.dao.AppLockDao;
import com.itheima.mobileguard.domain.AppInfo;
import com.itheima.mobileguard.engine.AppInfoParser;
import com.lidroid.xutils.DbUtils.DaoConfig;

public class LockFragment extends Fragment {

    private ListView list_view;
    private TextView tv_lock;
    private List<AppInfo> lockLists;
    private AppLockDao dao;
    private LockAdapter adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.item_lock_fragment, null);
        list_view = (ListView) view.findViewById(R.id.list_view);
        tv_lock = (TextView) view.findViewById(R.id.tv_lock);
        return view;
    }

    @Override
    public void onStart() {// 每次页面可见就会调用这个方法
        super.onStart();
        // 拿到所有的应用程序
        List<AppInfo> appInfos = AppInfoParser.getAppInfos(getActivity());
        // 初始化一个加锁的集合

        lockLists = new ArrayList<AppInfo>();
        dao = new AppLockDao(getActivity());
        for (AppInfo appInfo : appInfos) {
            // 如果能找到当前的包名说明在程序锁的数据库里面
            if (dao.find(appInfo.getPackname())) {
                lockLists.add(appInfo);
            } else {
            }
        }
        adapter = new LockAdapter();
        list_view.setAdapter(adapter);
    }

    private class LockAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            tv_lock.setText("已加锁(" + lockLists.size() + ")个");
            return lockLists.size();
        }

        @Override
        public Object getItem(int position) {
            return lockLists.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            final View view;
            ViewHolder holder = null;
            if (convertView == null) {
                view = View.inflate(getActivity(), R.layout.item_lock, null);
                holder = new ViewHolder();
                holder.iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
                holder.tv_name = (TextView) view.findViewById(R.id.tv_name);
                holder.iv_lock = (ImageView) view.findViewById(R.id.iv_lock);
                view.setTag(holder);
            } else {
                view = convertView;

                holder = (ViewHolder) view.getTag();
            }
            final AppInfo appInfo = lockLists.get(position);
            holder.iv_icon.setImageDrawable(appInfo.getIcon());
            holder.tv_name.setText(appInfo.getName());

            holder.iv_lock.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    TranslateAnimation translateAnimation = new TranslateAnimation(
                            Animation.RELATIVE_TO_SELF, 0,//X的起始位置
                            Animation.RELATIVE_TO_SELF, -1.0f,//x的终止位置(左滑)
                            Animation.RELATIVE_TO_SELF, 0,
                            Animation.RELATIVE_TO_SELF, 0);
                    translateAnimation.setDuration(5000);
                    view.startAnimation(translateAnimation);

                    new Thread() {
                        public void run() {
                            SystemClock.sleep(5000);
                            getActivity().runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    dao.delete(appInfo.getPackname());
                                    lockLists.remove(position);
                                    adapter.notifyDataSetChanged();
                                }
                            });
                        };
                    }.start();
                }
            });
            return view;
        }
    }

    static class ViewHolder {
        ImageView iv_icon;
        TextView tv_name;
        ImageView iv_lock;
    }
}

页面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_lock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>

UnLockFragment

package com.itheima.mobileguard.fragment;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.itheima.mobileguard.R;
import com.itheima.mobileguard.db.dao.AppLockDao;
import com.itheima.mobileguard.domain.AppInfo;
import com.itheima.mobileguard.engine.AppInfoParser;
//页面消失了再调用onStop()方法,onDestory()方法,不是调用onStop()方法,onDestory()方法再销毁页面。
public class UnLockFragment extends Fragment {

    private View view;
    private TextView tv_unlock;
    private ListView list_view;
    private List<AppInfo> appInfos;
    private AppLockDao dao;
    private List<AppInfo> unLockLists;
    private UnLockAdapter adapter;

    /*
     * 类似activity里面的setContentView,初始化界面在onCreateView()方法中,
     */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        view = inflater.inflate(R.layout.item_unlock_fragment, null);
        list_view = (ListView) view.findViewById(R.id.list_view);
        tv_unlock = (TextView) view.findViewById(R.id.tv_unlock);
        return view;
    }

    //初始化数据要在onStart()方法中,因为onCreateView()方法只调用一次。
    @Override
    public void onStart() {
        super.onStart();
        appInfos = AppInfoParser.getAppInfos(getActivity());

        // 获取到程序锁的dao
        dao = new AppLockDao(getActivity());
        // 初始化一个没有加锁的集合

        unLockLists = new ArrayList<AppInfo>();
        for (AppInfo appInfo : appInfos) {
            // 判断当前的应用是否在程序所的数据里面
            if (dao.find(appInfo.getPackname())) {
            } else {
                // 如果查询不到说明没有在程序锁的数据库里面
                unLockLists.add(appInfo);
            }
        }

        adapter = new UnLockAdapter();
        list_view.setAdapter(adapter);
    }

    public class UnLockAdapter extends BaseAdapter {

        @Override
        public int getCount() {//数量减少的时候会重新刷新,getCount()方法会执行,
            tv_unlock.setText("未加锁(" + unLockLists.size() + ")个");
            return unLockLists.size();
        }

        @Override
        public Object getItem(int position) {
            return unLockLists.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            ViewHolder holder = null;
            final View view;
            final AppInfo appInfo;
            if (convertView == null) {
                view = View.inflate(getActivity(), R.layout.item_unlock, null);
                /*<?xml version="1.0" encoding="utf-8"?>
                <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >
                    <ImageView
                        android:id="@+id/iv_icon"
                        android:layout_width="50dp"
                        android:layout_height="50dp"
                        android:src="@drawable/ic_launcher" />
                    <TextView
                        android:id="@+id/tv_name"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_weight="1111"
                        android:layout_gravity="center"
                        android:layout_marginLeft="5dp"
                        android:text="程序锁" />
                    <ImageView
                        android:id="@+id/iv_unlock"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:src="@drawable/list_button_lock_default" />
                </LinearLayout>*/
                holder = new ViewHolder();
                holder.iv_icon = (ImageView) view.findViewById(R.id.iv_icon);
                holder.tv_name = (TextView) view.findViewById(R.id.tv_name);
                holder.iv_unlock = (ImageView) view
                        .findViewById(R.id.iv_unlock);
                view.setTag(holder);
            } else {
                view = convertView;
                holder = (ViewHolder) view.getTag();
            }
            // 获取到当前的对象
            appInfo = unLockLists.get(position);
            holder.iv_icon
                    .setImageDrawable(unLockLists.get(position).getIcon());
            holder.tv_name.setText(unLockLists.get(position).getName());
            // 把程序添加到程序锁数据库里面,添加一个位移动画。
            holder.iv_unlock.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // 初始化一个位移动画
                    TranslateAnimation translateAnimation = new TranslateAnimation(
                            Animation.RELATIVE_TO_SELF, 0,//X轴的开始位置
                            Animation.RELATIVE_TO_SELF, 1.0f,//X轴的结束位置(右滑)
                            Animation.RELATIVE_TO_SELF, 0,//Y轴的开始位置
                            Animation.RELATIVE_TO_SELF, 0);//Y轴的结束位置
                    // 设置动画时间
                    translateAnimation.setDuration(5000);
                    // 开始动画,动画作用在整个View上面。
                    view.startAnimation(translateAnimation);
                    new Thread(){
                        public void run() {
                            SystemClock.sleep(5000);//动画是开启了子线城,不然这行代码就先执行了。
                            getActivity().runOnUiThread(new Runnable() {//刷新界面所有要在主线程执行
                                @Override
                                public void run() {
                                    // 添加到数据库里面
                                    dao.add(appInfo.getPackname());
                                    // 从当前的页面移除对象
                                    unLockLists.remove(position);
                                    // 刷新界面
                                    adapter.notifyDataSetChanged();
                                }
                            });
                        };
                    }.start();
                }
            });
            return view;
        }
    }

    static class ViewHolder {
        ImageView iv_icon;
        TextView tv_name;
        ImageView iv_unlock;
    }
}

item_unlock_fragment

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/tv_unlock"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </TextView>
    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>
</LinearLayout>
原文地址:https://www.cnblogs.com/yaowen/p/5156000.html