Files
assistant-android/app/src/main/java/com/gh/gamecenter/KcSelectGameActivity.java
2017-06-21 12:03:27 +08:00

201 lines
7.5 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.gh.gamecenter;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gh.base.AppController;
import com.gh.base.BaseActivity;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.Utils;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.adapter.KcSelectGameAdapter;
import com.gh.gamecenter.kuaichuan.FileInfo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import butterknife.BindView;
/**
* Created by khy on 2017/1/20.
* 快传-选择游戏
*/
public class KcSelectGameActivity extends BaseActivity {
@BindView(R.id.select_game_rv)
RecyclerView mSelectRv;
@BindView(R.id.select_game_send)
TextView mSelectSend;
@BindView(R.id.select_game_all)
CheckBox selectAll;
@BindView(R.id.install_count)
TextView installCount;
@BindView(R.id.select_game_installed_ll)
RelativeLayout installRl;
@BindView(R.id.select_game_pb)
ProgressBar mSelectPb;
private KcSelectGameAdapter mAdapter;
private boolean mIsConn;
private LinearLayoutManager layoutManager;
private RelativeLayout.LayoutParams rparams;
@NonNull
public static Intent getIntent(Context context, boolean isConn) {
Intent intent = new Intent(context, KcSelectGameActivity.class);
intent.putExtra("isConn", isConn);
return intent;
}
@Override
protected int getLayoutId() {
return R.layout.activity_kc_select_game;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0x123) {
if (data != null && data.getExtras() != null && data.getExtras().getBoolean("isFinish")) {
finish();
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initTitle(getString(R.string.title_select_game));
if (getIntent() != null && getIntent().getExtras() != null) {
mIsConn = getIntent().getExtras().getBoolean("isConn");
} else {
mIsConn = false;
}
selectAll.setVisibility(View.GONE);
mAdapter = new KcSelectGameAdapter(this, mSelectSend, installCount, mSelectPb);
layoutManager = new LinearLayoutManager(this);
mSelectRv.setLayoutManager(layoutManager);
mSelectRv.addItemDecoration(new VerticalItemDecoration(this, 8, false));
mSelectRv.setAdapter(mAdapter);
rparams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
DisplayUtils.dip2px(this, 40));
mSelectSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
List<FileInfo> selectData = mAdapter.getSelectData();
if (selectData.size() == 0) {
Utils.toast(KcSelectGameActivity.this, "请选择要发送的游戏");
return;
}
if (mIsConn) {
List<FileInfo> oldInfo = (List<FileInfo>) AppController.get("FileInfo", false);
if (oldInfo == null) {
oldInfo = new ArrayList<>();
}
for (FileInfo fileInfo : selectData) {
oldInfo.add(fileInfo);
}
setResult(0x130);
finish();
} else {
AppController.put("FileInfo", selectData);
startActivityForResult(ChooseReceiverActivity.getIntent(KcSelectGameActivity.this, false), 0x123);
}
}
});
selectAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
HashMap<Integer, Boolean> selectPosition = new HashMap<>();
int itemCount = mAdapter.getItemCount();
if (isChecked) {
for (int i = 0; i < itemCount; i++) {
selectPosition.put(i, true);
}
} else {
for (int i = 0; i < itemCount; i++) {
selectPosition.put(i, false);
}
}
mAdapter.setSelectPosition(selectPosition);
mAdapter.notifyItemRangeChanged(0, itemCount);
}
});
mSelectRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (dy == 0) return;
int position = layoutManager.findFirstVisibleItemPosition();
int gameSize = mAdapter.getGameSize();
if (gameSize == 0) { // 游戏列表为空
if (position == gameSize) {
int buttom = layoutManager.findViewByPosition(position).getBottom();
int i = installRl.getHeight() + DisplayUtils.dip2px(KcSelectGameActivity.this, 43);
if (buttom <= i && i / 2 < buttom) {
rparams.topMargin = buttom - installRl.getHeight() - DisplayUtils.dip2px(KcSelectGameActivity.this, 43);
installRl.setLayoutParams(rparams);
installCount.setText("已安装的游戏(" + gameSize + "");
} else {
installCount.setText("已安装的应用(" + mAdapter.getAppSize() + "");
rparams.topMargin = 0;
installRl.setLayoutParams(rparams);
}
} else {
installCount.setText("已安装的应用(" + mAdapter.getAppSize() + "");
rparams.topMargin = 0;
installRl.setLayoutParams(rparams);
}
} else {
if (position >= gameSize) {
installCount.setText("已安装的应用(" + mAdapter.getAppSize() + "");
} else {
installCount.setText("已安装的游戏(" + mAdapter.getGameSize() + "");
}
if (position == gameSize - 1) {
int buttom = layoutManager.findViewByPosition(position).getBottom();
if (buttom <= installRl.getHeight()) {
rparams.topMargin = buttom - installRl.getHeight();
installRl.setLayoutParams(rparams);
} else {
rparams.topMargin = 0;
installRl.setLayoutParams(rparams);
}
} else {
rparams.topMargin = 0;
installRl.setLayoutParams(rparams);
}
}
}
});
}
}