package com.race604.flyrefresh.sample; import android.animation.Animator; import android.animation.AnimatorSet; import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; import android.widget.ImageView; import android.widget.TextView; import com.race604.flyrefresh.FlyRefreshLayout; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Locale; public class MainActivity extends AppCompatActivity implements FlyRefreshLayout.OnPullRefreshListener { private FlyRefreshLayout mFlylayout; private RecyclerView mListView; private ItemAdapter mAdapter; private ArrayList<ItemData> mDataSet = new ArrayList<>(); private Handler mHandler = new Handler(); private LinearLayoutManager mLayoutManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initDataSet(); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); mFlylayout = (FlyRefreshLayout) findViewById(R.id.fly_layout); mFlylayout.setOnPullRefreshListener(this); mListView = (RecyclerView) findViewById(R.id.list); mLayoutManager = new LinearLayoutManager(this); mListView.setLayoutManager(mLayoutManager); mAdapter = new ItemAdapter(this); mListView.setAdapter(mAdapter); mListView.setItemAnimator(new SampleItemAnimator()); View actionButton = mFlylayout.getHeaderActionButton(); if (actionButton != null) { actionButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mFlylayout.startRefresh(); } }); } } private void initDataSet() { mDataSet.add(new ItemData(Color.parseColor("#76A9FC"), R.mipmap.ic_assessment_white_24dp, "Meeting Minutes", new Date(2014 - 1900, 2, 9))); mDataSet.add(new ItemData(Color.GRAY, R.mipmap.ic_folder_white_24dp, "Favorites Photos", new Date(2014 - 1900, 1, 3))); mDataSet.add(new ItemData(Color.GRAY, R.mipmap.ic_folder_white_24dp, "Photos", new Date(2014 - 1900, 0, 9))); } private void addItemData() { ItemData itemData = new ItemData(Color.parseColor("#FFC970"), R.mipmap.ic_smartphone_white_24dp, "Magic Cube Show", new Date()); mDataSet.add(0, itemData); mAdapter.notifyItemInserted(0); mLayoutManager.scrollToPosition(0); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Override public void onRefresh(FlyRefreshLayout view) { View child = mListView.getChildAt(0); if (child != null) { bounceAnimateView(child.findViewById(R.id.icon)); } mHandler.postDelayed(new Runnable() { @Override public void run() { mFlylayout.onRefreshFinish(); } }, 2000); } private void bounceAnimateView(View view) { if (view == null) { return; } Animator swing = ObjectAnimator.ofFloat(view, "rotationX", 0, 30, -20, 0); swing.setDuration(400); swing.setInterpolator(new AccelerateInterpolator()); swing.start(); } @Override public void onRefreshAnimationEnd(FlyRefreshLayout view) { addItemData(); } private class ItemAdapter extends RecyclerView.Adapter<ItemViewHolder> { private LayoutInflater mInflater; private DateFormat dateFormat; public ItemAdapter(Context context) { mInflater = LayoutInflater.from(context); dateFormat = SimpleDateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ENGLISH); } @Override public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view = mInflater.inflate(R.layout.view_list_item, viewGroup, false); return new ItemViewHolder(view); } @Override public void onBindViewHolder(ItemViewHolder itemViewHolder, int i) { final ItemData data = mDataSet.get(i); ShapeDrawable drawable = new ShapeDrawable(new OvalShape()); drawable.getPaint().setColor(data.color); itemViewHolder.icon.setBackgroundDrawable(drawable); itemViewHolder.icon.setImageResource(data.icon); itemViewHolder.title.setText(data.title); itemViewHolder.subTitle.setText(dateFormat.format(data.time)); } @Override public int getItemCount() { return mDataSet.size(); } } private static class ItemViewHolder extends RecyclerView.ViewHolder { ImageView icon; TextView title; TextView subTitle; public ItemViewHolder(View itemView) { super(itemView); icon = (ImageView) itemView.findViewById(R.id.icon); title = (TextView) itemView.findViewById(R.id.title); subTitle = (TextView) itemView.findViewById(R.id.subtitle); } } }