修改游戏详情空白页优化, 开服表修改部分显示规则和增加滑动动画
This commit is contained in:
@ -4,6 +4,7 @@ import android.animation.Animator;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.widget.DefaultItemAnimator;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.text.TextUtils;
|
||||
@ -14,7 +15,6 @@ import butterknife.BindView;
|
||||
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
|
||||
import com.gh.base.BaseActivity;
|
||||
import com.gh.common.util.DownloadItemUtils;
|
||||
import com.gh.common.util.Utils;
|
||||
import com.gh.common.view.VerticalItemDecoration;
|
||||
import com.gh.download.*;
|
||||
import com.gh.gamecenter.adapter.KaiFuAdapter;
|
||||
@ -64,6 +64,7 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
|
||||
private boolean isEverpause = false;
|
||||
private boolean move = false;
|
||||
private boolean smoothMove = false;
|
||||
|
||||
private String kaifuType;
|
||||
|
||||
@ -122,11 +123,13 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
|
||||
mAdapter = new KaiFuAdapter(this, this, this, kaifuType);
|
||||
layoutManager = new LinearLayoutManager(this);
|
||||
((DefaultItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);
|
||||
mRecyclerView.addItemDecoration(new VerticalItemDecoration(this, 8, false));
|
||||
mRecyclerView.setLayoutManager(layoutManager);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||
|
||||
@Override
|
||||
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
|
||||
super.onScrolled(recyclerView, dx, dy);
|
||||
@ -143,6 +146,15 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
@Override
|
||||
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
||||
super.onScrollStateChanged(recyclerView, newState);
|
||||
if (smoothMove && newState == RecyclerView.SCROLL_STATE_IDLE){
|
||||
smoothMove = false;
|
||||
int n = mMovePosition - layoutManager.findFirstVisibleItemPosition();
|
||||
if ( 0 <= n && n < mRecyclerView.getChildCount()){
|
||||
int top = layoutManager.findViewByPosition(n).getTop();
|
||||
mRecyclerView.smoothScrollBy(0, top);
|
||||
}
|
||||
}
|
||||
|
||||
//上拉加载
|
||||
if (mAdapter.isLoadedBottom() && newState == RecyclerView.SCROLL_STATE_IDLE
|
||||
&& mAdapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) {
|
||||
@ -200,15 +212,21 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
if (kaifuOffset == 0 && mInitMovePosition < 4) {
|
||||
mMovePosition =0;
|
||||
} else {
|
||||
mMovePosition = mInitMovePosition + mAdapter.getLoadCountTop() - 24;
|
||||
mMovePosition = mInitMovePosition + mAdapter.getLoadCountTop() - 25;
|
||||
}
|
||||
moveToPosition(mMovePosition);
|
||||
} else {
|
||||
mChangeName.setText("即将开服↑");
|
||||
mChangeName.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.content));
|
||||
mChangeRl.setBackgroundResource(R.drawable.border_suggest_bg);
|
||||
mMovePosition = mInitMovePosition + mAdapter.getLoadCountTop() - 20;
|
||||
moveToPosition(mMovePosition);
|
||||
if (mMovePosition < 0) {
|
||||
mMovePosition = mInitMovePosition;
|
||||
}
|
||||
}
|
||||
|
||||
if (mInitMovePosition != 1) {
|
||||
mRecyclerView.stopScroll();
|
||||
moveToPosition(mMovePosition, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -279,7 +297,6 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
|
||||
kaifuOffset = 0;
|
||||
kaifuType = tag;
|
||||
Utils.log("==========load");
|
||||
|
||||
mRecyclerView.setVisibility(View.VISIBLE);
|
||||
mPbLoading.setVisibility(View.VISIBLE);
|
||||
@ -288,6 +305,10 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
|
||||
mAdapter = new KaiFuAdapter(this, this, this, kaifuType);
|
||||
mRecyclerView.setAdapter(mAdapter);
|
||||
|
||||
mChangeName.setText("即将开服↑");
|
||||
mChangeName.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.content));
|
||||
mChangeRl.setBackgroundResource(R.drawable.border_suggest_bg);
|
||||
}
|
||||
|
||||
public void isShowPopupBg(boolean isShow) {
|
||||
@ -446,25 +467,38 @@ public class KaiFuActivity extends BaseActivity implements KaiFuDialogAdapter.On
|
||||
DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher);
|
||||
}
|
||||
|
||||
private void moveToPosition(int n) {
|
||||
private void moveToPosition(int n, boolean isSmooth) {
|
||||
int firstItem = layoutManager.findFirstVisibleItemPosition();
|
||||
int lastItem = layoutManager.findLastVisibleItemPosition();
|
||||
if (n <= firstItem) {
|
||||
mRecyclerView.scrollToPosition(n);
|
||||
if (isSmooth) {
|
||||
mRecyclerView.smoothScrollToPosition(n);
|
||||
} else {
|
||||
mRecyclerView.scrollToPosition(n);
|
||||
}
|
||||
} else if (n <= lastItem) {
|
||||
int top = mRecyclerView.getChildAt(n - firstItem).getTop();
|
||||
mRecyclerView.scrollBy(0, top);
|
||||
int top = layoutManager.findViewByPosition(n).getTop();
|
||||
if (isSmooth) {
|
||||
mRecyclerView.smoothScrollBy(0, top);
|
||||
} else {
|
||||
mRecyclerView.scrollBy(0, top);
|
||||
}
|
||||
} else {
|
||||
mRecyclerView.scrollToPosition(n);
|
||||
move = true;
|
||||
if (isSmooth) {
|
||||
mRecyclerView.smoothScrollToPosition(n);
|
||||
smoothMove = true;
|
||||
} else {
|
||||
mRecyclerView.scrollToPosition(n);
|
||||
move = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScroll(int scrollPosition) {
|
||||
mInitMovePosition = scrollPosition + getGameEntityIndex();
|
||||
moveToPosition(mInitMovePosition);
|
||||
mInitMovePosition = scrollPosition + getGameEntityIndex() + 1;
|
||||
moveToPosition(mInitMovePosition, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user