package im.zico.wingtwitter.ui.fragment;
import android.app.Activity;
import android.content.Loader;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.widget.ImageButton;
import android.widget.Toast;
import android.widget.Toolbar;
import com.nineoldandroids.animation.Animator;
import com.nineoldandroids.view.ViewPropertyAnimator;
import java.util.Calendar;
import im.zico.wingtwitter.APIKey;
import im.zico.wingtwitter.R;
import im.zico.wingtwitter.WingApp;
import im.zico.wingtwitter.dao.WingStore;
import im.zico.wingtwitter.ui.MainActivity;
import im.zico.wingtwitter.ui.TweetComposeActivity;
import im.zico.wingtwitter.utils.PrefKey;
import im.zico.wingtwitter.utils.PreferencesManager;
import twitter4j.AsyncTwitter;
import twitter4j.Paging;
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.StatusUpdate;
import twitter4j.Twitter;
import twitter4j.TwitterAdapter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.TwitterListener;
import twitter4j.TwitterMethod;
import twitter4j.conf.ConfigurationBuilder;
/**
* Created by tinyao on 12/4/14.
*/
public class HomeTimeLineFragment extends BaseStatusesListFragment {
private static final String TAG = "HOME_TIMELINE";
private static final String ARG_SECTION_NUMBER = "section_number";
private ImageButton composeBtn;
private boolean fabVisible = true;
/**
* Returns a new instance of this fragment for the given section number.
*/
public static HomeTimeLineFragment newInstance(int sectionNumber) {
HomeTimeLineFragment fragment = new HomeTimeLineFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public HomeTimeLineFragment() {
}
boolean isLaunch = true;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.mPageId = getArguments().getInt(ARG_SECTION_NUMBER);
Log.d("DEBUG", TAG + "onCreate: " + Calendar.getInstance().getTimeInMillis());
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
composeBtn = (ImageButton) view.findViewById(R.id.fab_compose);
composeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TweetComposeActivity.showDialog(getActivity(), new Bundle());
}
});
Log.d("DEBUG", TAG + "onViewCreated: " + Calendar.getInstance().getTimeInMillis());
}
@Override
public int getType() {
return WingStore.TYPE_TWEET;
}
@Override
public void loadLatest() {
Log.d(TAG, "Load latest tweets ...");
if (isListEmpty()) {
getAsyncTwitter().getHomeTimeline();
} else {
getAsyncTwitter().getHomeTimeline(
new Paging(1, 20, mAdapter.getItem(0).tweet_id));
}
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
super.onLoadFinished(loader, data);
if (isLaunch) {
int index = PreferencesManager.getInstance(getActivity()).getIntValue("timeline_position_index");
int top = PreferencesManager.getInstance(getActivity()).getIntValue("timeline_position_top");
mListView.setSelectionFromTop(index, top);
isLaunch = false;
}
}
@Override
public void loadNext() {
getAsyncTwitter().getHomeTimeline(
new Paging(1, 20).maxId(mAdapter.getItem(mAdapter.getCount() - 1).tweet_id - 1));
}
@Override
public synchronized void onScrollDown() {
if (fabVisible) {
// 显示
// showToolbar(false);
ViewPropertyAnimator.animate(composeBtn).setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(200)
.translationY(getResources().getDimensionPixelSize(R.dimen.fab_offset))
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
fabVisible = false;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
}
@Override
public synchronized void onScrollUp() {
if (!fabVisible) {
ViewPropertyAnimator.animate(composeBtn).setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(200)
.translationY(0)
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
fabVisible = true;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d("DEBUG", TAG + "onAttach: " + Calendar.getInstance().getTimeInMillis());
}
@Override
public void onSaveInstanceState(Bundle outState) {
int index = mListView.getFirstVisiblePosition();
View v = mListView.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mListView.getPaddingTop());
outState.putInt("index", index);
outState.putInt("top", top);
PreferencesManager.getInstance(getActivity()).setValue("timeline_position_index", index);
PreferencesManager.getInstance(getActivity()).setValue("timeline_position_top", top);
super.onSaveInstanceState(outState);
}
@Override
public void onDestroy() {
onSaveInstanceState(new Bundle());
super.onDestroy();
}
}