package com.ouwenjie.note.fragment;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gc.materialdesign.views.ButtonFloat;
import com.ouwenjie.note.R;
import com.ouwenjie.note.activity.MainActivity;
import com.ouwenjie.note.adapter.ListAdapter;
import com.ouwenjie.note.db.NoteDatabaseHelper;
import com.ouwenjie.note.model.BaseNote;
import com.ouwenjie.note.utils.LogUtils;
import com.umeng.analytics.MobclickAgent;
import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;
import jp.wasabeef.recyclerview.animators.SlideInLeftAnimator;
import yalantis.com.sidemenu.interfaces.ScreenShotable;
/**
* Create at 2015年2月26日17:52:09 By ouwenjie
*/
public class ListFragment extends Fragment implements ScreenShotable, View.OnClickListener, ListAdapter.OnItemClickListener, ListAdapter.OnItemLongClickListener {
// 切换动画
private View containerView;
private Bitmap bitmap;
private Activity activity;
private RecyclerView recyclerView;
private ListAdapter adapter;
private RecyclerView.LayoutManager layoutManager;
private ButtonFloat fab;
private List<BaseNote> noteList = new ArrayList<>();
private NoteDatabaseHelper dbHelper = new NoteDatabaseHelper();
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
* @return A new instance of fragment ListFragment.
*/
// TODO: Rename and change types and number of parameters
public static ListFragment newInstance() {
ListFragment fragment = new ListFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public ListFragment() {
// Required empty public constructor
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.containerView = view.findViewById(R.id.container);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
}
}
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart("ListFragment"); //统计页面
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("ListFragment");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_list, container, false);
fab = (ButtonFloat) view.findViewById(R.id.new_edit_fab);
fab.setOnClickListener(this);
recyclerView = (RecyclerView) view.findViewById(R.id.list_recyclerview);
initRecyclerView();
LogUtils.e("onCreateView");
return view;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
}
@Override
public void onDetach() {
super.onDetach();
}
public void initRecyclerView() {
// mLayoutManager = new LinearLayoutManager(activity); // 创建一个线性布局管理器
// mRecyclerView.setHasFixedSize(true); // 提高性能(假如你能确定当你的内容改变时,item布局的大小不会改变时,可使用该方法提高性能)
// mRecyclerView.setLayoutManager(mLayoutManager); // 设置布局管理器
layoutManager = new GridLayoutManager(activity,2);
recyclerView.setLayoutManager(layoutManager);
adapter = new ListAdapter(activity,myDataset());
adapter.setOnItemClickListener(this);
adapter.setOnItemLongClickListener(this);
recyclerView.setAdapter(adapter);
recyclerView.setItemAnimator(new SlideInLeftAnimator());
recyclerView.getItemAnimator().setAddDuration(300);
recyclerView.getItemAnimator().setRemoveDuration(300);
recyclerView.getItemAnimator().setMoveDuration(300);
recyclerView.getItemAnimator().setChangeDuration(300);
}
private List<BaseNote> myDataset() {
TreeSet<BaseNote> allNote = ((MainActivity) activity).getNoteSet();
for (BaseNote anAllNote : allNote) {
if (anAllNote.getNoteType()==BaseNote.NOTE_TYPE_LIST) {
noteList.add(anAllNote);
}
}
return noteList;
}
@Override
public void takeScreenShot() {
Thread thread = new Thread() {
@Override
public void run() {
Bitmap bitmap = Bitmap.createBitmap(containerView.getWidth(),
containerView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
containerView.draw(canvas);
ListFragment.this.bitmap = bitmap;
}
};
thread.start();
}
@Override
public Bitmap getBitmap() {
return bitmap;
}
@Override
public void onClick(View v) {
}
@Override
public void onItemClick(String dbID) {
}
@Override
public void onItemLongClick(String dbID) {
}
}