Files
assistant-android/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java

158 lines
5.2 KiB
Java

package com.gh.gamecenter;
import android.os.Bundle;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import com.gh.base.BaseActivity;
import com.gh.common.util.DisplayUtils;
import com.gh.gamecenter.adapter.GameNewsAdapter;
import com.gh.gamecenter.adapter.GameNewsTypeListAdapter;
import com.gh.gamecenter.eventbus.EBTypeChange;
import java.util.ArrayList;
/**
* Created by LGT on 2016/8/29.
*/
public class GameNewsActivity extends BaseActivity implements View.OnClickListener{
private GameNewsAdapter adapter;
private GameNewsTypeListAdapter typeListAdapter;
private RecyclerView game_news_list;
private RecyclerView game_news_top_type_list;
private LinearLayoutManager layoutManager;
private ImageView ivSearch;
private ArrayMap<String, GameNewsAdapter> adapterMap;
private ArrayList<String> typeList;
private String gameName;
private String gameId;
private String entrance;
private float startY = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
entrance = getIntent().getStringExtra("entrance");
View contentView = View.inflate(this, R.layout.activity_game_news, null);
ivSearch = new ImageView(this);
ivSearch.setImageResource(R.drawable.search_icon);
RelativeLayout.LayoutParams ivSearchParams = new RelativeLayout.LayoutParams(
DisplayUtils.dip2px(this, 20), DisplayUtils.dip2px(this, 20));
ivSearchParams.addRule( RelativeLayout.CENTER_VERTICAL);
ivSearchParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
ivSearchParams.setMargins(0, 0, DisplayUtils.dip2px(this, 10), 0);
RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar);
reuse_actionbar.addView(ivSearch, ivSearchParams);
ivSearch.setOnClickListener(this);
ivSearch.setVisibility(View.GONE);
gameName = getIntent().getStringExtra("gameName");
init(contentView, gameName);
adapterMap = new ArrayMap<>();
typeList = getIntent().getStringArrayListExtra("articleTypes");
typeList.add(0, "全部");
gameId = getIntent().getStringExtra("gameId");
game_news_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(this);
game_news_list.setLayoutManager(layoutManager);
adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, "全部", entrance);
adapterMap.put("全部", adapter);
game_news_list.setAdapter(adapter);
game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (layoutManager.findFirstVisibleItemPosition() >= 1) {
game_news_top_type_list.setVisibility(View.VISIBLE);
ivSearch.setVisibility(View.VISIBLE);
} else {
game_news_top_type_list.setVisibility(View.GONE);
ivSearch.setVisibility(View.GONE);
}
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& layoutManager.findLastVisibleItemPosition() == adapter.getItemCount() - 1) {
if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) {
adapter.addList(adapter.getNewsList().size());
}
}
}
});
game_news_top_type_list.setHasFixedSize(true);
game_news_top_type_list.setLayoutManager(new GridLayoutManager(this, 5));
typeListAdapter = new GameNewsTypeListAdapter(typeList, "全部");
game_news_top_type_list.setAdapter(typeListAdapter);
ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams();
params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 35)+ DisplayUtils.dip2px(this, 12);
game_news_top_type_list.setLayoutParams(params);
//禁止由于滑动出现的阴影
game_news_top_type_list.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
startY = event.getY();
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
if (Math.abs(startY - event.getY()) > 0) {
return true;
}
}
return false;
}
});
}
public void onEventMainThread(EBTypeChange change) {
adapter = adapterMap.get(change.getType());
if (adapter == null) {
adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, change.getType(), entrance);
adapterMap.put(change.getType(), adapter);
}
game_news_list.setAdapter(adapter);
game_news_top_type_list.setVisibility(View.GONE);
ivSearch.setVisibility(View.GONE);
typeListAdapter.setNewsType(change.getType(), change.getPosition());
}
@Override
public void onClick(View v) {
if (v == ivSearch){
game_news_list.scrollToPosition(0);
game_news_top_type_list.setVisibility(View.GONE);
ivSearch.setVisibility(View.GONE);
adapter.openKeyBoard();
}
}
}