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 0000000000..e8cb81d41b Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_down.png differ diff --git a/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_time.png b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_time.png new file mode 100644 index 0000000000..5fa13894a0 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_time.png differ 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 0000000000..1563fb5665 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/kaifu_hint_icon_up.png differ diff --git a/app/src/main/res/drawable/kaifu_hint.xml b/app/src/main/res/drawable/kaifu_hint.xml new file mode 100644 index 0000000000..75f2165e48 --- /dev/null +++ b/app/src/main/res/drawable/kaifu_hint.xml @@ -0,0 +1,9 @@ + + + + + + + + \ 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" > + + + + + + + + + + +