From 06734d62745ea87b061fc0e1c1c384f7eaec449f Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Fri, 1 Jun 2018 19:20:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=BB=E5=BC=80=E6=9C=8D=E8=A1=A8=20?= =?UTF-8?q?=E5=AE=8C=E6=88=90`=E4=B8=8B=E4=B8=AA=E8=8A=82=E7=82=B9`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/gamecenter/kaifu/KaiFuFragment.java | 2 + .../gh/gamecenter/kaifu/KaiFuVpAdapter.java | 4 -- .../gh/gamecenter/kaifu/KaiFuVpFragment.java | 50 +++++++++++++++++ .../kaifu/KaiFuWrapperFragment.java | 36 +++++++++++++ .../drawable-xhdpi/kaifu_hint_icon_down.png | Bin 0 -> 288 bytes .../drawable-xhdpi/kaifu_hint_icon_time.png | Bin 0 -> 475 bytes .../res/drawable-xhdpi/kaifu_hint_icon_up.png | Bin 0 -> 274 bytes app/src/main/res/drawable/kaifu_hint.xml | 9 ++++ .../res/layout/fragment_kaifu_wrapper.xml | 51 ++++++++++++++++-- 9 files changed, 145 insertions(+), 7 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/kaifu_hint_icon_down.png create mode 100644 app/src/main/res/drawable-xhdpi/kaifu_hint_icon_time.png create mode 100644 app/src/main/res/drawable-xhdpi/kaifu_hint_icon_up.png create mode 100644 app/src/main/res/drawable/kaifu_hint.xml diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java index efdc45528b..a3bf718e0c 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuFragment.java @@ -146,6 +146,8 @@ public class KaiFuFragment extends BaseFragment { } private void setTabbarPosition(int index) { + if (getParentFragment() instanceof KaiFuWrapperFragment) + ((KaiFuWrapperFragment) getParentFragment()).pageChange(index); switch (index) { case 0: mKaifuTabbarToday.setChecked(true); diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java index 139fabc24d..f28338e370 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpAdapter.java @@ -379,10 +379,6 @@ public class KaiFuVpAdapter extends BaseRecyclerAdapter { return mIsRemove; } - public int getDataListCount() { - return mDataCount; - } - public List getDataList() { return mEntityList; } diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java index bed4999db0..c569d70996 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuVpFragment.java @@ -5,7 +5,9 @@ import android.support.annotation.Nullable; import android.support.v4.view.ViewPager; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.LinearSmoothScroller; import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; @@ -22,6 +24,7 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.KaiFuCalendarEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; +import com.gh.gamecenter.eventbus.EBTypeChange; import com.lightgame.download.DataWatcher; import com.lightgame.download.DownloadEntity; @@ -61,6 +64,7 @@ public class KaiFuVpFragment extends BaseFragment { private LinearLayoutManager mLayoutManager; private RelativeLayout.LayoutParams mLlparams; + private RecyclerView.SmoothScroller mSmoothScroller; private String mGameId; private String mDay; @@ -143,9 +147,11 @@ public class KaiFuVpFragment extends BaseFragment { KaiFuCalendarEntity serverEntity = timeGameEntity.getServerEntity(); if (serverEntity != null) { mKaifuItemTimeTv.setText(dateFm.format(serverEntity.getTime() * 1000)); + mKaifuItemTimeTv.setTag(serverEntity.getTime()); } } else { mKaifuItemTimeTv.setText(dateFm.format(timeHint * 1000)); + mKaifuItemTimeTv.setTag(timeHint); } // 悬挂界面移动 @@ -165,6 +171,12 @@ public class KaiFuVpFragment extends BaseFragment { } }); + mSmoothScroller = new LinearSmoothScroller(getContext()) { + @Override + protected int getVerticalSnapPreference() { + return LinearSmoothScroller.SNAP_TO_START; + } + }; } @Override @@ -270,4 +282,42 @@ public class KaiFuVpFragment extends BaseFragment { mLoading.setVisibility(View.GONE); } + private int getNextTimePosition() { + Object tag = mKaifuItemTimeTv.getTag(); + if (tag instanceof Long) { + List dataList = mAdapter.getDataList(); + boolean b = false; + for (int i = 0; i < dataList.size(); i++) { + GameEntity gameEntity = dataList.get(i); // 注意:列表位置和mEntityList一一对应 + if (b && gameEntity.getKaifuTimeHint() != null) { + return i; + } + if (tag.equals(gameEntity.getKaifuTimeHint())) { + b = true; + } + } + return -1; + } + return -1; + } + + // 滑动命令 + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(EBTypeChange status) { + if (getUserVisibleHint() && (status.getPosition() == KaiFuWrapperFragment.CUR_ALL_KAIFU && TextUtils.isEmpty(mGameId) + || status.getPosition() == KaiFuWrapperFragment.CUR_GAME_KAIFU && !TextUtils.isEmpty(mGameId))) { + String type = status.getType(); + if (KaiFuWrapperFragment.SKIP_NEXT_TIME.equals(type)) { + int position = getNextTimePosition(); + if (position != -1) { + mSmoothScroller.setTargetPosition(position); + mLayoutManager.startSmoothScroll(mSmoothScroller); + } + } else if (KaiFuWrapperFragment.SKIP_CUR_TIME.equals(type)) { + + } + } + + } + } diff --git a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java index 182491022d..102dc99c52 100644 --- a/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java +++ b/app/src/main/java/com/gh/gamecenter/kaifu/KaiFuWrapperFragment.java @@ -4,16 +4,22 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.FragmentTransaction; import android.view.MenuItem; +import android.view.View; import android.widget.TextView; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBKaiFuReset; +import com.gh.gamecenter.eventbus.EBTypeChange; import com.gh.gamecenter.normal.NormalFragment; +import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; +import butterknife.BindView; +import butterknife.OnClick; + /** * Created by CsHeng on 14/12/2017. *

@@ -24,10 +30,21 @@ public class KaiFuWrapperFragment extends NormalFragment { public static final String SINGLE_GAME_KAIFU = "SINGLE_GAME_KAIFU"; public static final String ALL_GAME_KAIFU = "ALL_GAME_KAIFU"; + public static final String SKIP_CUR_TIME = "SKIP_CUR_TIME"; + public static final String SKIP_NEXT_TIME = "SKIP_NEXT_TIME"; + public static final String SKIP_LIST_TOP = "SKIP_LIST_TOP"; + public static final int CUR_GAME_KAIFU = 1; + public static final int CUR_ALL_KAIFU = -1; + private MenuItem mResetMenuItem; private KaiFuFragment mKaiFuFragment; private KaiFuFragment mGameKaiFuFragment; + @BindView(R.id.kaifu_skip_cur_time) + View mSkipCurTime; + @BindView(R.id.kaifu_skip_next_time) + View mSkipNextTime; + @Override protected int getLayoutId() { return R.layout.fragment_kaifu_wrapper; @@ -99,4 +116,23 @@ public class KaiFuWrapperFragment extends NormalFragment { } } + public void pageChange(int index) { + if (index == 0) { + mSkipCurTime.setVisibility(View.VISIBLE); + } else { + mSkipCurTime.setVisibility(View.GONE); + } + } + + @OnClick({R.id.kaifu_skip_next_time, R.id.kaifu_skip_cur_time}) + public void onViewClick(View view) { + if (view.getId() == R.id.kaifu_skip_next_time) { + EventBus.getDefault().post(new EBTypeChange(SKIP_NEXT_TIME, mGameKaiFuFragment != null && mGameKaiFuFragment.isVisible() + ? CUR_GAME_KAIFU : CUR_ALL_KAIFU)); + } else { + EventBus.getDefault().post(new EBTypeChange(SKIP_CUR_TIME, mGameKaiFuFragment != null && mGameKaiFuFragment.isVisible() + ? CUR_GAME_KAIFU : CUR_ALL_KAIFU)); + } + } + } diff --git a/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_down.png b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_down.png new file mode 100644 index 0000000000000000000000000000000000000000..e8cb81d41b57739063d36da61474bc2b547fa557 GIT binary patch literal 288 zcmV+*0pI?KP)$lcXXt zFZD_pnHO$XuIp_c1GkcHJ!l{3V>j281XE}in8f>Aj|@WsGq@@6^x-KYz*k5W=s;9Wd4Z)Si9%Jx;Pdb moxgl7YCu0abBb5QZNv(1I-qR)n6C%2-j*SW(&X1NcoE8wzaNyJzg=mI^U1GIput$hMhU;>PR2ViqlP0}H+NE%97YS$K$ zp3E1KwWZ}$4(T3(wIw~9$VSpg(uJhjp4ghLjVxA{+fEAXOIlmvouuZGU5I+qa%39) zIACAWR?@emK?+dR2d1%&LZjQbw!q#WVBUMCwGMA@_=5N|OY&vclCBbdsXx<77&r`_ zS(3N^kTg#i>(6xPfn~YtyixKCk_Ol`?WLr0U_W&oxCLf$RUm`SOuG(r16&0GxXA(L z&1?4pT)6^x%n|6dI{~gXz5=Tpfh%LQ%D6)Ol0l>a%p=dlB5-`&75Y0C$$Ao4RHOe0n~DY)r>I>aLp6oJV&6{o&>l~4RDzw&})ygmbNs$ zQ`)i??==3acxP!(N&R4ZLIpQq?}d&SVQ67PRCs#}8xzA9>E8$8l2q)d{{!@W(~o99 RZc_jN002ovPDHLkV1iku&@KP~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_up.png b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_up.png new file mode 100644 index 0000000000000000000000000000000000000000..1563fb5665e2c02037428396eb6fa3874228107d GIT binary patch literal 274 zcmV+t0qy>YP)LVnvuXptg>QRFvi4fi&G*`xPsN%tqeHMHGzF_#ShMbpTCszq zWeZ&Tz22x5n@TELVBz%cyN zA?m{O*l61TTVMsagyH3UcI)qYsg&2E0FHh=15TFk*Sr>g@DKhlI7!G{fHTkkY-J5U Y0AB5 + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_kaifu_wrapper.xml b/app/src/main/res/layout/fragment_kaifu_wrapper.xml index f4bb95cf2d..931d6fa20a 100644 --- a/app/src/main/res/layout/fragment_kaifu_wrapper.xml +++ b/app/src/main/res/layout/fragment_kaifu_wrapper.xml @@ -1,5 +1,50 @@ - \ No newline at end of file + android:layout_height = "match_parent" > + + + + + + + + + + +