package licola.demo.com.huabandemo.Module.BoardDetail;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.view.View;
import butterknife.BindView;
import licola.demo.com.huabandemo.API.Fragment.OnBoardDetailFragmentInteractionListener;
import licola.demo.com.huabandemo.API.HttpsAPI.OperateAPI;
import licola.demo.com.huabandemo.Base.BaseActivity;
import licola.demo.com.huabandemo.Entity.PinsMainEntity;
import licola.demo.com.huabandemo.HttpUtils.RetrofitClient;
import licola.demo.com.huabandemo.Module.ImageDetail.ImageDetailActivity;
import licola.demo.com.huabandemo.Observable.MyRxObservable;
import licola.demo.com.huabandemo.R;
import licola.demo.com.huabandemo.Module.User.UserActivity;
import licola.demo.com.huabandemo.Util.Constant;
import licola.demo.com.huabandemo.Util.Logger;
import licola.demo.com.huabandemo.Util.NetUtils;
import licola.demo.com.huabandemo.Util.SPUtils;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class BoardDetailActivity extends BaseActivity
implements OnBoardDetailFragmentInteractionListener {
protected static final String TYPE_KEY = "TYPE_KEY";
protected static final String TYPE_TITLE = "TYPE_TITLE";
@BindView(R.id.toolbar)
Toolbar mToolBar;
@BindView(R.id.fab_board_detail)
FloatingActionButton mFabBoardAttention;
@Override
protected int getLayoutId() {
return R.layout.activity_board_detail;
}
@Override
protected String getTAG() {
return this.toString();
}
public String mKey;
public String mTitle;
//是否我的画板 音响FloatingActionButton 的显示
private boolean isMe=false;
//该画板是否被关注的标志位 默认false
public boolean isFollow = false;
public static void launch(Activity activity, String key, String title) {
Intent intent = new Intent(activity, BoardDetailActivity.class);
intent.putExtra(TYPE_TITLE, title);
intent.putExtra(TYPE_KEY, key);
activity.startActivity(intent);
}
public static void launch(Activity activity, int flag) {
Intent intent = new Intent(activity, BoardDetailActivity.class);
intent.setFlags(flag);
activity.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setSupportActionBar(mToolBar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mKey = getIntent().getStringExtra(TYPE_KEY);
mTitle = getIntent().getStringExtra(TYPE_TITLE);
setTitle(mTitle);
Logger.d(mAuthorization);
//先锁定
mFabBoardAttention.setEnabled(false);
mFabBoardAttention.setOnClickListener(view -> actionAttention());
getSupportFragmentManager().
beginTransaction().replace(R.id.framelayout_board_detail, BoardDetailFragment.newInstance(mKey)).commit();
}
private void actionAttention() {
String operate = isFollow ? Constant.OPERATEUNFOLLOW : Constant.OPERATEFOLLOW;
Animator animation = AnimatorInflater.loadAnimator(mContext, R.animator.scale_small_animation);
animation.setTarget(mFabBoardAttention);
MyRxObservable.add(animation)
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.flatMap(aVoid -> RetrofitClient.createService(OperateAPI.class)
.httpsFollowBoardOperate(mAuthorization, mKey, operate))
.observeOn(AndroidSchedulers.mainThread())//最后统一回到UI线程中处理
.subscribe(new Subscriber<FollowBoardOperateBean>() {
@Override
public void onCompleted() {
Logger.d();
setFabDrawableAndStart(isFollow ? R.drawable.ic_done_white_24dp : R.drawable.ic_loyalty_white_24dp, mContext, mFabBoardAttention);
}
@Override
public void onError(Throwable e) {
Logger.d(e.toString());
setFabDrawableAndStart(R.drawable.ic_report_white_24dp, mContext, mFabBoardAttention);
NetUtils.checkHttpException(mContext, e, mToolBar);
}
@Override
public void onNext(FollowBoardOperateBean followBoardOperateBean) {
isFollow = !isFollow;//取反
}
});
}
private void setFabDrawableAndStart(int resId, Context mContext, FloatingActionButton mFabActionBtn) {
mFabActionBtn.setImageResource(resId);
Animator animation = AnimatorInflater.loadAnimator(mContext, R.animator.scale_magnify_animation);
animation.setTarget(mFabActionBtn);
animation.start();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Logger.d("id=" + item.getItemId());
int id = item.getItemId();
switch (id) {
case android.R.id.home:
actionHome();
break;
}
return true;
}
private void actionHome() {
finish();
}
@Override
public void onClickPinsItemImage(PinsMainEntity bean, View view) {
//绑定的fragment 需要跳转的点击事件
ImageDetailActivity.launch(BoardDetailActivity.this);
}
@Override
public void onClickPinsItemText(PinsMainEntity bean, View view) {
//绑定的fragment 需要跳转的点击事件
ImageDetailActivity.launch(BoardDetailActivity.this);
}
@Override
public void onClickUserField(String key, String title) {
//// TODO: 2016/4/7 0007 绑定的fragment headView 的点击事件 跳转到用户界面
UserActivity.launch(BoardDetailActivity.this, key, title);
}
//联网结果回调
@Override
public void onHttpBoardAttentionState(String userId,boolean isAttention) {
//如果登录 才能取本地userId值
if (isLogin){
String localUserId = (String) SPUtils.get(mContext, Constant.USERID, "");
isMe = userId.equals(localUserId);
}
if (!isMe){
this.isFollow = isAttention;
mFabBoardAttention.setVisibility(View.VISIBLE);
mFabBoardAttention.setImageResource(
isAttention ? R.drawable.ic_done_white_24dp : R.drawable.ic_loyalty_white_24dp);
}
}
}