219 lines
7.7 KiB
Java
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);
|
|
}
|
|
}
|
|
|
|
}
|