Files
assistant-android/app/src/main/java/com/gh/gamecenter/message/MessageCenterFragment.java
2017-12-18 16:00:30 +08:00

219 lines
7.7 KiB
Java

package com.gh.gamecenter.message;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.CheckedTextView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gh.base.fragment.BaseFragment_ViewPager_Checkable;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.RandomUtils;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.MessageUnreadEntity;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBUISwitch;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.util.List;
import butterknife.BindView;
import okhttp3.ResponseBody;
import retrofit2.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/**
* Created by khy on 2017/4/5.
* 首页-消息
*/
public class MessageCenterFragment extends BaseFragment_ViewPager_Checkable {
@BindView(R.id.message_comment_hint)
TextView mMessageCommentHint;
@BindView(R.id.message_kefu_hint)
View mMessageKefuHint;
@BindView(R.id.message_slide_line)
View mMessageSlideLine;
@BindView(R.id.message_comment_tv)
CheckedTextView mMessageCommentTv;
@BindView(R.id.message_kefu_tv)
CheckedTextView mMessageKefuTv;
private LinearLayout.LayoutParams mLayoutParams;
public static final int INDEX_COMMENT = 0;
public static final int INDEX_KEFU = 1;
public static final String MESSAGE_READ_OVER = "messageReadOver";
public static final String EB_MESSAGEFRAGMENT_TAG = "MessageFragment";
public static final String EB_KEFUMARKREADCOUNT = "kefuMarkReadCount";
public static final String EB_COMMENTMARKREAD = "commentMarkRead";
private int mWidth;
private int mKeFuUnreadCount;
public static MessageCenterFragment newInstance() {
final Bundle args = new Bundle(1);
args.putInt(ARGS_INDEX, INDEX_COMMENT);
final MessageCenterFragment fragment = new MessageCenterFragment();
fragment.setArguments(args);
return fragment;
}
@Override
protected int getLayoutId() {
return R.layout.fragment_message;
}
@Override
protected int getCheckableGroupId() {
return R.id.lightgame_tab_container;
}
@Override
protected int getViewPagerId() {
return R.id.lightgame_tab_viewpager;
}
@Override
protected boolean getSmoothScroll() {
return true;
}
@Override
protected void initFragmentList(List<Fragment> fragments) {
fragments.add(new CommentFragment());
fragments.add(new KeFuFragment());
}
@Override
protected void initView(View view) {
super.initView(view);
DisplayMetrics outMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
mWidth = outMetrics.widthPixels / 2;
mLayoutParams = new LinearLayout.LayoutParams((int) (mWidth * 0.6), DisplayUtils.dip2px(getContext(), 2));
mLayoutParams.leftMargin = RandomUtils.getInt(mWidth * (mCheckedIndex + 0.2f));
mMessageSlideLine.setLayoutParams(mLayoutParams);
initMessageUnread(getContext());
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setNavigationTitle(getString(R.string.title_message_center));
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.postDelayed(new Runnable() {
@Override
public void run() {
EventBus.getDefault().post(new EBUISwitch(EB_MESSAGEFRAGMENT_TAG, mCheckedIndex));
}
}, 100);
}
private void initMessageUnread(final Context context) {
RetrofitManager.getInstance(context).getApi()
.getMessageUnread()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<MessageUnreadEntity>() {
@Override
public void onResponse(MessageUnreadEntity response) {
super.onResponse(response);
if (response.getComment() > 0) {
mMessageCommentHint.setVisibility(View.VISIBLE);
mMessageCommentHint.setText(String.valueOf(response.getComment()));
}
if (response.getKefuList() != null && response.getKefuList().size() > 0) {
mKeFuUnreadCount = response.getKefuList().size();
if (mKeFuUnreadCount != 0) {
mMessageKefuHint.setVisibility(View.VISIBLE);
}
}
}
@Override
public void onFailure(HttpException e) {
}
});
}
// 隐藏未读提示
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(EBUISwitch reuse) {
if (EB_KEFUMARKREADCOUNT.equals(reuse.getFrom()) && reuse.getPosition() == mKeFuUnreadCount) {
mMessageKefuHint.setVisibility(View.GONE);
if (mMessageKefuHint.getVisibility() == View.GONE && mMessageCommentHint.getVisibility() == View.GONE) {
EventBus.getDefault().post(new EBReuse(MESSAGE_READ_OVER));
}
} else if (EB_COMMENTMARKREAD.equals(reuse.getFrom()) && mMessageCommentHint.getVisibility() == View.VISIBLE) {
mMessageCommentHint.setVisibility(View.GONE);
postMarkCommentRead(getContext());
if (mMessageKefuHint.getVisibility() == View.GONE && mMessageCommentHint.getVisibility() == View.GONE) {
EventBus.getDefault().post(new EBReuse(MESSAGE_READ_OVER));
}
}
}
private void postMarkCommentRead(final Context context) {
RetrofitManager.getInstance(context).getApi()
.postMarkCommentRead()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<ResponseBody>() {
@Override
public void onResponse(ResponseBody response) {
super.onResponse(response);
}
@Override
public void onFailure(HttpException e) {
super.onFailure(e);
}
});
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
if (positionOffset != 0) {
mLayoutParams.leftMargin = RandomUtils.getInt(mWidth * (position + positionOffset + 0.2f));
// mMessageSlideLine.setLayoutParams(mLayoutParams);
mMessageSlideLine.requestLayout();
}
}
@Override
protected void onPageChanged(int index) {
super.onPageChanged(index);
EventBus.getDefault().post(new EBUISwitch(EB_MESSAGEFRAGMENT_TAG, index));
if (index == 0) {
mMessageCommentTv.setChecked(true);
mMessageKefuTv.setChecked(false);
} else {
mMessageCommentTv.setChecked(false);
mMessageKefuTv.setChecked(true);
}
}
}