entrance检查与统一

This commit is contained in:
huangzhuanghua
2017-01-20 17:11:03 +08:00
parent b3fc66f6b9
commit b2d568d646
72 changed files with 521 additions and 3895 deletions

View File

@ -40,6 +40,8 @@ public class BaseActivity extends Activity implements OnCallBackListener {
private SystemBarTintManager tintManager;
protected String entrance;
private boolean isPause;
@Override
@ -48,6 +50,10 @@ public class BaseActivity extends Activity implements OnCallBackListener {
Utils.log(this.getClass().getSimpleName());
AppController.getInstance().addActivity(this);
EventBus.getDefault().register(this);
entrance = getIntent().getStringExtra("entrance");
if (getIntent().getBundleExtra("data") != null) {
entrance = getIntent().getBundleExtra("data").getString("entrance");
}
}
protected void init(View contentView, String title) {

View File

@ -335,8 +335,7 @@ public abstract class BaseDetailActivity extends BaseActivity implements View.On
});
}
} else {
DownloadDialog.getInstance(this)
.showPopupWindow(v, gameEntity, entrance, name + ":" + title);
DownloadDialog.getInstance(this).showPopupWindow(v, gameEntity, entrance, name + ":" + title);
}
} else {
toast("稍等片刻~!游戏正在上传中...");
@ -346,6 +345,7 @@ public abstract class BaseDetailActivity extends BaseActivity implements View.On
if ("下载中".equals(str)) {
Intent intent = new Intent(this, DownloadManagerActivity.class);
intent.putExtra("url", gameEntity.getApk().get(0).getUrl());
intent.putExtra("entrance", entrance + "+(" + name + "[" + title + "])");
startActivity(intent);
} else if ("安装".equals(str)) {
PackageUtils.launchSetup(this, mDownloadEntity.getPath());

View File

@ -37,6 +37,8 @@ import de.greenrobot.event.EventBus;
public class BaseFragmentActivity extends FragmentActivity {
protected String entrance;
private boolean isPause;
@Override
@ -45,6 +47,10 @@ public class BaseFragmentActivity extends FragmentActivity {
Utils.log(this.getClass().getSimpleName());
AppController.getInstance().addActivity(this);
EventBus.getDefault().register(this);
entrance = getIntent().getStringExtra("entrance");
if (getIntent().getBundleExtra("data") != null) {
entrance = getIntent().getBundleExtra("data").getString("entrance");
}
}
public void init(View contentView, String title) {

View File

@ -126,32 +126,38 @@ public class HomeFragment extends Fragment implements View.OnClickListener {
@Override
public void onClick(View v) {
final int id = v.getId();
if (id == R.id.actionbar_notification) {
DataUtils.onEvent(getActivity(), "主页", "关注图标");
DataCollectionUtils.uploadClick(getActivity(), "关注图标", "主页");
startActivity(new Intent(getActivity(), ConcernActivity.class));
} else if (id == R.id.actionbar_rl_download) {
if (id == R.id.actionbar_rl_download) {
DataUtils.onEvent(getActivity(), "主页", "下载图标");
DataCollectionUtils.uploadClick(getActivity(), "下载图标", "主页");
startActivity(new Intent(getActivity(), DownloadManagerActivity.class));
Intent intent = new Intent(getActivity(), DownloadManagerActivity.class);
intent.putExtra("entrance", "(工具栏)");
startActivity(intent);
} else if (id == R.id.actionbar_iv_search) {
DataUtils.onEvent(getActivity(), "主页", "搜索图标");
DataCollectionUtils.uploadClick(getActivity(), "搜索图标", "主页");
Intent intent = new Intent(getActivity(), SearchActivity.class);
intent.putExtra("clicked", true);
intent.putExtra("hint", hint);
intent.putExtra("entrance", "(工具栏)");
startActivity(intent);
} else if (id == R.id.actionbar_search_input) {
DataUtils.onEvent(getActivity(), "主页", "搜索框");
DataCollectionUtils.uploadClick(getActivity(), "搜索框", "主页");
Intent goSearch = new Intent(getActivity(), SearchActivity.class);
goSearch.putExtra("clicked", false);
goSearch.putExtra("hint", hint);
startActivity(goSearch);
} else if (id == R.id.actionbar_iv_search) {
DataUtils.onEvent(getActivity(), "主页", "搜索图标");
DataCollectionUtils.uploadClick(getActivity(), "搜索图标", "主页");
Intent intent = new Intent(getActivity(), SearchActivity.class);
intent.putExtra("clicked", false);
intent.putExtra("hint", hint);
intent.putExtra("entrance", "(工具栏)");
startActivity(intent);
} else if (id == R.id.actionbar_notification) {
DataUtils.onEvent(getActivity(), "主页", "关注图标");
DataCollectionUtils.uploadClick(getActivity(), "关注图标", "主页");
Intent searchIntent = new Intent(getActivity(), SearchActivity.class);
searchIntent.putExtra("clicked", true);
searchIntent.putExtra("hint", hint);
startActivity(searchIntent);
Intent intent = new Intent(getActivity(), ConcernActivity.class);
intent.putExtra("entrance", "(工具栏)");
startActivity(intent);
}
}

View File

@ -20,42 +20,40 @@ import java.util.List;
**/
public class ConcernContentUtils {
public static void addContentPic(int width, LinearLayout linearLayout, List<String> list, Context context) {
public static void addContentPic(Context context, LinearLayout linearLayout, List<String> list,
String entrance, int width) {
int count = list.size();
LinearLayout ll;
int index = 0;
for (int i = 0, size = (int) Math.ceil(list.size() / 3.0f); i < size; i++) {
switch (count % 3) {
case 0:
ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
for (int j = 0; j < 3; j++) {
ll.addView(getImageView(list, index, width, 0, context));
index += 1;
}
linearLayout.addView(ll);
count -= 3;
break;
case 1:
linearLayout.addView(getImageView(list, index, width, 1, context));
count -= 1;
int type = count % 3;
if (type == 0) {
LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
for (int j = 0; j < 3; j++) {
ll.addView(getImageView(context, list, entrance, index, width, 0));
index += 1;
break;
case 2:
ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
for (int j = 0; j < 2; j++) {
ll.addView(getImageView(list, index, width, 2, context));
index += 1;
}
linearLayout.addView(ll);
count -= 2;
break;
}
linearLayout.addView(ll);
count -= 3;
} else if (type == 1) {
linearLayout.addView(getImageView(context, list, entrance, index, width, 1));
count -= 1;
index += 1;
} else if (type == 2) {
LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
for (int j = 0; j < 2; j++) {
ll.addView(getImageView(context, list, entrance, index, width, 2));
index += 1;
}
linearLayout.addView(ll);
count -= 2;
}
}
}
private static SimpleDraweeView getImageView(final List<String> list, final int position, int width, int type, final Context context) {
private static SimpleDraweeView getImageView(final Context context, final List<String> list, final String entrance,
final int position, int width, int type) {
SimpleDraweeView imageView;
if (type == 0) {
imageView = new SimpleDraweeView(context);
@ -65,14 +63,16 @@ public class ConcernContentUtils {
DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4));
lparams.weight = 1;
imageView.setLayoutParams(lparams);
ImageUtils.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
ImageUtils.getInstance().display(context.getResources(), imageView,
ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
} else if (type == 1) {
imageView = new SimpleDraweeView(context);
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(width, width / 2);
lparams.setMargins(DisplayUtils.dip2px(context, 2), 0,
DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4));
imageView.setLayoutParams(lparams);
ImageUtils.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
ImageUtils.getInstance().display(context.getResources(), imageView,
ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
} else {
imageView = new SimpleDraweeView(context);
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
@ -81,7 +81,8 @@ public class ConcernContentUtils {
DisplayUtils.dip2px(context, 2), DisplayUtils.dip2px(context, 4));
lparams.weight = 1;
imageView.setLayoutParams(lparams);
ImageUtils.getInstance().display(context.getResources(), imageView, ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
ImageUtils.getInstance().display(context.getResources(), imageView,
ScalingUtils.ScaleType.CENTER_CROP, list.get(position));
}
imageView.setOnClickListener(new View.OnClickListener() {
@Override
@ -90,6 +91,7 @@ public class ConcernContentUtils {
checkIntent.putExtra("urls", (ArrayList<String>) list);
checkIntent.putExtra("current", position);
checkIntent.putExtra("ScaleType", "FIT_CENTER");
checkIntent.putExtra("entrance", entrance);
context.startActivity(checkIntent);
}
});

View File

@ -185,8 +185,7 @@ public class DialogUtils {
@Override
public void onConfirem() {
// 跳转wifi管理界面
Intent intent = new Intent("android.settings.WIFI_SETTINGS");
context.startActivity(intent);
context.startActivity(new Intent("android.settings.WIFI_SETTINGS"));
}
});
}
@ -205,14 +204,12 @@ public class DialogUtils {
if (ShareUtils.isQQClientAvailable(context)) {
//安装了QQ会直接调用QQ打开手机QQ进行会话 QQ号2586716223
String str = "mqqwpa://im/chat?chat_type=wpa&uin=" + finalQq + "&version=1&src_type=web&web_src=oicqzone.com";
Uri uri = Uri.parse(str);
Intent it = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(it);
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(str)));
} else {
//没有安装QQ 复制账号
ClipboardManager cmb = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
cmb.setText(finalQq);
Utils.toast(context,"已复制" + finalQq);
Utils.toast(context, "已复制" + finalQq);
}
}
}, null);

View File

@ -328,7 +328,7 @@ public class DownloadItemUtils {
download_percentage, downloadBtn, entity, true);
}
public static void setNormalOnClickListener(final Context context,
private static void setNormalOnClickListener(final Context context,
final TextView downloadBtn,
final GameEntity gameEntity,
final int position,
@ -370,6 +370,7 @@ public class DownloadItemUtils {
} else if ("下载中".equals(str)) {
Intent intent = new Intent(context, DownloadManagerActivity.class);
intent.putExtra("url", gameEntity.getApk().get(0).getUrl());
intent.putExtra("entrance", entrance + "+(" + location.split(":")[0] + ")");
context.startActivity(intent);
} else if ("更新".equals(str)) {
if (NetworkUtils.isWifiConnected(context)) {
@ -387,7 +388,7 @@ public class DownloadItemUtils {
});
}
public static void setPluginOnClickListener(final Context context,
private static void setPluginOnClickListener(final Context context,
final TextView downloadBtn,
final GameEntity entity,
final String entrance,

View File

@ -49,8 +49,8 @@ public class GameUtils {
public static void startGameDetailActivity(Context context, GameEntity gameEntity, String entrance) {
AppController.put("GameEntity", gameEntity);
Intent intent = new Intent(context, GameDetailActivity.class);
intent.putExtra("entrance", entrance);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("entrance", entrance);
context.startActivity(intent);
}
@ -59,9 +59,9 @@ public class GameUtils {
*/
public static void startGameDetailActivity(Context context, String gameId, String entrance) {
Intent intent = new Intent(context, GameDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("gameId", gameId);
intent.putExtra("entrance", entrance);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}

View File

@ -210,7 +210,7 @@ public class LibaoUtils {
}
public static void initLibaoBtn(final TextView libaoBtn, final LibaoEntity libaoEntity, final LibaoDao libaoDao,
final boolean isInstallRequired, final LibaoDetailAdapter adapter) {
final boolean isInstallRequired, final LibaoDetailAdapter adapter, final String entrance) {
libaoBtn.setTextColor(Color.WHITE);
switch (libaoEntity.getStatus()) {
@ -300,11 +300,11 @@ public class LibaoUtils {
case "查看":
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(libaoBtn.getContext(), LibaoDetailActivity.class);
intent.putExtra("entrance", entrance);
libaoBtn.getContext().startActivity(intent);
break;
case "领取":
libaoLing(libaoBtn, libaoEntity, adapter, isInstallRequired, libaoDao, null);
libaoLing(libaoBtn, libaoEntity, adapter, isInstallRequired, libaoDao, null, entrance);
break;
case "淘号":
postLibaoTao(libaoBtn.getContext(), libaoEntity.getId(), true, new PostLibaoListener() {
@ -411,7 +411,7 @@ public class LibaoUtils {
}
private static void libaoLing(final TextView libaoBtn, final LibaoEntity libaoEntity, final LibaoDetailAdapter adapter,
final boolean isInstallRequired, final LibaoDao libaoDao, String captchaCode) {
final boolean isInstallRequired, final LibaoDao libaoDao, String captchaCode, final String entrance) {
postLibaoLing(libaoBtn.getContext(), libaoEntity.getId(), true, new PostLibaoListener() {
@Override
@ -492,7 +492,7 @@ public class LibaoUtils {
DialogUtils.showHintDialog(libaoBtn.getContext(), "礼包已领光"
, "手速不够快,礼包已经被抢光了,十分抱歉", "知道了");
libaoEntity.setStatus("used_up");
initLibaoBtn(libaoBtn, libaoEntity, libaoDao, isInstallRequired, adapter);
initLibaoBtn(libaoBtn, libaoEntity, libaoDao, isInstallRequired, adapter, entrance);
} else if ("maintaining".equals(detail)) {
Utils.toast(libaoBtn.getContext(), "网络状态异常,请稍后再试");
@ -510,7 +510,7 @@ public class LibaoUtils {
.showDialog(new GeetestUtils.GeetestListener() {
@Override
public void succed(String response) {
libaoLing(libaoBtn, libaoEntity, adapter, isInstallRequired, libaoDao, response);
libaoLing(libaoBtn, libaoEntity, adapter, isInstallRequired, libaoDao, response, entrance);
}
});
return;

View File

@ -5,11 +5,8 @@ import android.content.Intent;
import android.graphics.Color;
import android.widget.TextView;
import com.gh.base.AppController;
import com.gh.gamecenter.MessageDetailActivity;
import com.gh.gamecenter.NewsDetailActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ConcernEntity;
import com.gh.gamecenter.entity.NewsEntity;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
@ -46,22 +43,11 @@ public class NewsUtils {
*/
public static void startNewsDetailActivity(Context context, NewsEntity newsEntity, String entrance) {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("id", newsEntity.getId());
intent.putExtra("title", newsEntity.getTitle());
intent.putExtra("type", newsEntity.getType());
intent.putExtra("entrance", entrance);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
/**
* 启动消息详情页面
*/
public static void startMessageActivity(Context context, ConcernEntity concernEntity, String entrance) {
AppController.put("ConcernEntity", concernEntity);
Intent intent = new Intent(context, MessageDetailActivity.class);
intent.putExtra("entrance", entrance);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}

View File

@ -368,9 +368,9 @@ public class ShareUtils {
}
}
Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse( "smsto:" ));
sendIntent.putExtra( "sms_body", smsBody);
sendIntent.setType( "vnd.android-dir/mms-sms" );
Intent sendIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:"));
sendIntent.putExtra("sms_body", smsBody);
sendIntent.setType("vnd.android-dir/mms-sms");
try {
context.startActivity(sendIntent);

View File

@ -36,6 +36,8 @@ import com.gh.gamecenter.listener.OnCollectionCallBackListener;
import com.gh.gamecenter.manager.PackageManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
@ -275,98 +277,79 @@ public class DownloadDialog implements OnCollectionCallBackListener {
viewPager.setCurrentItem(currentItem);
}
private ArrayList<ApkEntity> sortApk(List<ApkEntity> apkList) {
List<ApkEntity> pluginDoneList = new ArrayList<>(); // 安装插件
List<ApkEntity> pluginDownloadList = new ArrayList<>(); // 插件化下载中
List<ApkEntity> pluginList = new ArrayList<>(); // 插件化
List<ApkEntity> updateDoneList = new ArrayList<>(); // 安装更新
List<ApkEntity> updateDownloadList = new ArrayList<>(); // 更新下载中
List<ApkEntity> updateList = new ArrayList<>(); // 更新
List<ApkEntity> doneList = new ArrayList<>(); // 安装
List<ApkEntity> downloadList = new ArrayList<>(); // 下载中
List<ApkEntity> installList = new ArrayList<>(); // 启动
List<ApkEntity> noPicList = new ArrayList<>(); // 默认(无图片)
private ArrayList<ApkEntity> sortApk(ArrayList<ApkEntity> apkList) {
/*
* 安装插件 10
* 插件化下载中 9
* 插件化 8
* 安装更新 7
* 更新下载中 6
* 更新 5
* 安装 4
* 下载中 3
* 启动 2
* 默认有图片1
* 默认无图片0
*/
DownloadEntity downloadEntity;
String packageName;
Object gh_id;
for (int i = 0, size = apkList.size(); i < size; i++) {
downloadEntity = DownloadManager.getInstance(context).get(apkList.get(i).getUrl());
packageName = apkList.get(i).getPackageName();
gh_id = PackageUtils.getMetaData(context, packageName, "gh_id");
for (ApkEntity apkEntity : apkList) {
downloadEntity = DownloadManager.getInstance(context).get(apkEntity.getUrl());
if (downloadEntity == null) {
if (PackageManager.isInstalled(packageName)
&& (gh_id == null || gh_id.equals(gameEntity.getId()))) {
if (PackageManager.isCanUpdate(gameEntity.getId(), packageName)) {
updateList.add(apkList.remove(i));
size--;
i--;
} else if (!PackageUtils.isSignature(context, packageName)) {
pluginList.add(apkList.remove(i));
size--;
i--;
} else {
installList.add(apkList.remove(i));
size--;
i--;
}
} else {
String platform = apkList.get(i).getPlatform();
int id = PlatformUtils.getInstance(context).getPlatformPic(platform);
if (id == 0) {
String path = PlatformUtils.getInstance(context).getPlatformPicPath(platform);
if (path == null) {
noPicList.add(apkList.remove(i));
size--;
i--;
packageName = apkEntity.getPackageName();
if (PackageManager.isInstalled(packageName)) {
gh_id = PackageUtils.getMetaData(context, packageName, "gh_id");
if (gh_id == null || gh_id.equals(gameEntity.getId())) {
if (!PackageUtils.isSignature(context, packageName)) {
apkEntity.setOrder(8);
} else if (PackageManager.isCanUpdate(gameEntity.getId(), packageName)) {
apkEntity.setOrder(5);
} else {
apkEntity.setOrder(2);
}
continue;
}
}
apkEntity.setOrder(1);
String platform = apkEntity.getPlatform();
int id = PlatformUtils.getInstance(context).getPlatformPic(platform);
if (id == 0) {
String path = PlatformUtils.getInstance(context).getPlatformPicPath(platform);
if (path == null) {
apkEntity.setOrder(0);
}
}
} else {
if (downloadEntity.getStatus().equals(DownloadStatus.done)) {
if (downloadEntity.isPluggable()) {
pluginDoneList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(10);
} else if (downloadEntity.isUpdate()) {
updateDoneList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(7);
} else {
doneList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(4);
}
} else {
if (downloadEntity.isPluggable()) {
pluginDownloadList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(9);
} else if (downloadEntity.isUpdate()) {
updateDownloadList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(6);
} else {
downloadList.add(apkList.remove(i));
size--;
i--;
apkEntity.setOrder(3);
}
}
}
}
ArrayList<ApkEntity> list = new ArrayList<>();
list.addAll(pluginDoneList);
list.addAll(pluginDownloadList);
list.addAll(pluginList);
list.addAll(updateDoneList);
list.addAll(updateDownloadList);
list.addAll(updateList);
list.addAll(doneList);
list.addAll(downloadList);
list.addAll(installList);
list.addAll(apkList);
list.addAll(noPicList);
return list;
Comparator<ApkEntity> comparator = new Comparator<ApkEntity>() {
@Override
public int compare(ApkEntity lhs, ApkEntity rhs) {
return rhs.getOrder() - lhs.getOrder();
}
};
Collections.sort(apkList, comparator);
return apkList;
}
// 接收安装成功的消息,更新界面

View File

@ -23,6 +23,7 @@ import butterknife.BindView;
/**
* Created by LGT on 2016/8/29.
* 游戏新闻界面
*/
public class GameNewsActivity extends BaseActivity implements View.OnClickListener{

View File

@ -25,6 +25,7 @@ import de.greenrobot.event.EventBus;
/**
* Created by khy on 2016/12/12.
*
*/
public class LibaoActivity extends BaseFragmentActivity implements View.OnClickListener,
ViewPager.OnPageChangeListener {
@ -42,7 +43,6 @@ public class LibaoActivity extends BaseFragmentActivity implements View.OnClickL
private LinearLayout.LayoutParams lparams;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

View File

@ -18,6 +18,7 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/12/13.
*
*/
public class LibaoDetailActivity extends BaseDetailActivity {
@ -35,9 +36,9 @@ public class LibaoDetailActivity extends BaseDetailActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
actionbar_tv_title.setText("礼包详情");
title = "礼包详情";
mLibaoEntity = (LibaoEntity) AppController.get("libaoEntity", true);
name = "礼包详情";
iv_share.setVisibility(View.GONE);
@ -46,6 +47,7 @@ public class LibaoDetailActivity extends BaseDetailActivity {
detail_rv_show.setAdapter(mAdapter);
if (mLibaoEntity.getGame().getId() != null) {
title = mLibaoEntity.getName();
getGameDigest();
}
@ -73,8 +75,6 @@ public class LibaoDetailActivity extends BaseDetailActivity {
@Override
public void onResponse(GameEntity response) {
gameEntity = response;
title = gameEntity.getName();
entrance = "礼包详情"; //TODO
downloadAddWord = gameEntity.getDownloadAddWord();
downloadOffText = gameEntity.getDownloadOffText();

View File

@ -227,7 +227,8 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
DataCollectionUtils.uploadDownload(this, downloadEntity, "完成");
if (downloadEntity.getEntrance().matches("^" + "\\(游戏\\-插件:滚动图\\[.+\\]\\)" + "$")) {
if (downloadEntity.getEntrance().matches("^" + "\\(游戏\\-插件:滚动图\\[.+\\]\\)" + "$")
|| downloadEntity.getEntrance().matches("^" + "\\(游戏\\-专题:滚动图\\[.+\\]\\)" + "$")) {
// 首页轮播图数据统计
statLunbotuData(downloadEntity.getEntrance());
}
@ -944,6 +945,7 @@ public class MainActivity extends BaseFragmentActivity implements OnClickListene
Intent intent = new Intent(MainActivity.this, DownloadManagerActivity.class);
intent.putExtra("currentItem", 1);
intent.putExtra("packageName", packageName);
intent.putExtra("entrance", "(游戏插件)");
startActivity(intent);
break;
}

View File

@ -93,8 +93,6 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
private int commentNum = -1; //区分来源 -1资讯关注列表 !=-1 :新闻详情
private boolean openSoftInput;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
@ -110,7 +108,6 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
Intent intent = getIntent();
newsId = intent.getExtras().getString("newsId");
commentNum = intent.getExtras().getInt("commentNum");
openSoftInput = intent.getExtras().getBoolean("openSoftInput"); //新闻详情的发表评论
//复用问题 mConcernEntity对应的文章有可能和跳转之前的文章不一致
if (mConcernEntity != null && newsId != null && !newsId.equals(mConcernEntity.getId())) {
@ -199,7 +196,7 @@ public class MessageDetailActivity extends BaseActivity implements MessageDetail
getConcernDigest();
}
if (openSoftInput) {
if (intent.getExtras().getBoolean("openSoftInput")) {//新闻详情的发表评论
setSoftInput(true);
}
}

View File

@ -61,6 +61,7 @@ import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Action1;
import rx.schedulers.Schedulers;
/**
* 文章详情页面 要启动该页面 需要传入一下参数 放入 EssayEntity中传过来 文章 id 文章标题 title 文章发表时间 time
*
@ -105,8 +106,6 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
private Handler handler = new Handler();
private String entrance;
private String name;
private String title;
private String downloadOffText;
private DataWatcher dataWatcher = new DataWatcher() {
@ -151,8 +150,6 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
R.id.reuse_actionbar);
reuse_actionbar.addView(iv_share, params);
name = "新闻详情";
init(contentView);
DisplayMetrics outMetrics = new DisplayMetrics();
@ -174,7 +171,6 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
if (type != null) {
actionbar_tv_title.setText(type);
}
this.title = title;
adapter.setId(id);
adapter.setType(type);
adapter.setTitle(title);
@ -380,8 +376,6 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
adapter.setTitle(response.getTitle());
adapter.getNewsDetail();
title = response.getTitle();
iv_share.setVisibility(View.VISIBLE);
}
@ -400,7 +394,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
@Override
public void onClick(final View v) {
if (v == reuse_no_connection) {
if (v == reuse_no_connection) {
detail_rv_show.setVisibility(View.VISIBLE);
reuse_ll_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
@ -420,7 +414,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
}
} else {
DownloadDialog.getInstance(this)
.showPopupWindow(v, gameEntity, entrance, name + ":" + title);
.showPopupWindow(v, gameEntity, entrance, "新闻详情:" + adapter.getTitle());
}
} else {
toast("稍等片刻~!游戏正在上传中...");
@ -430,6 +424,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
if ("下载中".equals(str)) {
Intent intent = new Intent(this, DownloadManagerActivity.class);
intent.putExtra("url", gameEntity.getApk().get(0).getUrl());
intent.putExtra("entrance", entrance + "(新闻详情[" + adapter.getTitle() + "])");
startActivity(intent);
} else if ("安装".equals(str)) {
PackageUtils.launchSetup(this, mDownloadEntity.getPath());
@ -439,6 +434,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
intent.putExtra("commentNum", -1);
intent.putExtra("newsId", adapter.getNewsDetailEntity().getId());
intent.putExtra("openSoftInput", true);
intent.putExtra("entrance", entrance + "(新闻详情[" + adapter.getTitle() + "])");
startActivity(intent);
}
}
@ -698,7 +694,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
private void download() {
String str = detail_tv_download.getText().toString();
if (str.contains("启动")) {
DataUtils.onGameLaunchEvent(this, gameEntity.getName(), gameEntity.getApk().get(0).getPlatform(), name);
DataUtils.onGameLaunchEvent(this, gameEntity.getName(), gameEntity.getApk().get(0).getPlatform(), "新闻详情");
PackageUtils.launchApplicationByPackageName(this, gameEntity.getApk().get(0).getPackageName());
} else {
@ -715,7 +711,7 @@ public class NewsDetailActivity extends BaseActivity implements OnClickListener
if (TextUtils.isEmpty(msg)) {
DataUtils.onGameDownloadEvent(this, gameEntity.getName(), apkEntity.getPlatform(), entrance, "下载开始");
DownloadManager.createDownload(this, apkEntity, gameEntity, method, entrance, name + ":" + title);
DownloadManager.createDownload(this, apkEntity, gameEntity, method, entrance, "新闻详情:" + adapter.getTitle());
detail_tv_download.setVisibility(View.GONE);
detail_pb_progressbar.setVisibility(View.VISIBLE);

View File

@ -277,7 +277,7 @@ public class NewsSearchActivity extends BaseActivity {
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(NewsSearchActivity.this, newsEntity, entrance + "+(游戏新闻搜索)");
NewsUtils.startNewsDetailActivity(NewsSearchActivity.this, newsEntity, entrance + "+(游戏新闻搜索:" + searchKey + ")");
}
});
}else if (holder instanceof FooterViewHolder){

View File

@ -52,7 +52,6 @@ public class SearchActivity extends BaseFragmentActivity {
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 1){
setResultPresentModel(1);
}

View File

@ -213,7 +213,9 @@ public class SettingActivity extends BaseActivity implements OnClickListener {
});
break;
case R.id.setting_rl_feedback:
startActivity(new Intent(SettingActivity.this, SuggestionActivity.class));
Intent intent = new Intent(SettingActivity.this, SuggestionActivity.class);
intent.putExtra("entrance", "(设置)");
startActivity(intent);
break;
case R.id.setting_tv_disclaimer:
String content = sp.getString("disclaimer", null);

View File

@ -27,7 +27,7 @@ public class SkipActivity extends BaseActivity {
}
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("entrance", "(网页跳转)");
intent.putExtra("entrance", "(浏览器)");
if (RunningUtils.isRunning(this)
&& MainActivity.class.getName().equals(RunningUtils.getBaseActivity(this))) {
// 应用正在运行,前台或后台
@ -48,6 +48,10 @@ public class SkipActivity extends BaseActivity {
+ "-V" + uri.getQueryParameter("version") + "";
intent.putExtra("content", content);
intent.setClass(this, SuggestionActivity.class);
} else if ("download".equals(host)) {
intent.setClass(this, DownloadManagerActivity.class);
intent.putExtra("gameId", id);
intent.putExtra("packageName", getIntent().getData().getQueryParameter("packageName"));
}
} else {
// 应用未在运行
@ -72,6 +76,10 @@ public class SkipActivity extends BaseActivity {
+ "-V" + uri.getQueryParameter("version") + "";
intent.putExtra("content", content);
intent.putExtra("to", "SuggestionActivity");
} else if ("download".equals(host)) {
intent.putExtra("to", "DownloadManagerActivity");
intent.putExtra("gameId", id);
intent.putExtra("packageName", getIntent().getData().getQueryParameter("packageName"));
}
}
startActivity(intent);

View File

@ -49,8 +49,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
@BindView(R.id.et_suggest_connectway) EditText et_suggest_connectway;
@BindView(R.id.btn_suggest_post) CardLinearLayout btn_suggest_post;
private boolean isShowing = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -110,7 +108,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
if (TextUtils.isEmpty(email)) {
showConfirmDialog(email);
} else if (isEmailAddress(email)) {
isShowing = true;
Dialog dialog = new Dialog(this);
View view = View.inflate(this, R.layout.set_wait_dialog, null);
TextView message = (TextView) view
@ -120,15 +117,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
dialog.setContentView(view);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
// dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
// @Override
// public void onDismiss(DialogInterface dialog) {
// if (isShowing) {
// AppController.canclePendingRequests(TAG);
// toast("取消发送");
// }
// }
// });
dialog.show();
sendSuggestion(dialog, email);
} else {
@ -165,7 +153,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
new DialogUtils.CancelListener() {
@Override
public void onCancel() {
isShowing = true;
Dialog dialog = new Dialog(SuggestionActivity.this);
View view = View.inflate(SuggestionActivity.this,
R.layout.set_wait_dialog, null);
@ -176,15 +163,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
dialog.setContentView(view);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
// dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
// @Override
// public void onDismiss(DialogInterface dialog) {
// if (isShowing) {
// AppController.canclePendingRequests(TAG);
// toast("取消发送");
// }
// }
// });
dialog.show();
sendSuggestion(dialog, email);
}
@ -210,7 +188,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
.subscribe(new JSONObjectResponse() {
@Override
public void onResponse(JSONObject response) {
isShowing = false;
dialog.dismiss();
if (response.length() != 0) {
@ -231,7 +208,6 @@ public class SuggestionActivity extends BaseActivity implements OnClickListener
@Override
public void onFailure(HttpException e) {
isShowing = false;
dialog.dismiss();
toast("提交失败,请检查网络状态");

View File

@ -29,6 +29,7 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/10/18.
*
*/
public class WebActivity extends BaseActivity {
@ -41,6 +42,8 @@ public class WebActivity extends BaseActivity {
private String newsId;
private int commentNum;
private String entrance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -57,6 +60,8 @@ public class WebActivity extends BaseActivity {
}
// webUrl = "http://tieba.baidu.com/f?kw=%E7%BD%91%E6%98%93%E9%98%B4%E9%98%B3%E5%B8%88&red_tag=3194925450";
entrance = getIntent().getStringExtra("entrance");
View contentView = View.inflate(this, R.layout.activity_web, null);
init(contentView, webTitle);
@ -135,6 +140,7 @@ public class WebActivity extends BaseActivity {
Intent intent = new Intent(this, MessageDetailActivity.class);
intent.putExtra("newsId", newsId);
intent.putExtra("commentNum", commentNum);
intent.putExtra("entrance", entrance + "+(光环浏览器)");
startActivityForResult(intent, 1001);
}

View File

@ -44,10 +44,17 @@ public class ConcernAdapter extends RecyclerView.Adapter<ConcernViewHolder> {
private ConcernManager concernManager;
private String entrance;
public ConcernAdapter(ConcernActivity activity) {
this.context = activity;
this.listener = activity;
entrance = activity.getIntent().getStringExtra("entrance");
if (activity.getIntent().getBundleExtra("data") != null) {
entrance = activity.getIntent().getBundleExtra("data").getString("entrance");
}
concernManager = new ConcernManager(context);
concernList = concernManager.getConcernGame();
@ -156,7 +163,7 @@ public class ConcernAdapter extends RecyclerView.Adapter<ConcernViewHolder> {
DataCollectionUtils.uploadClick(context, "列表", "我的关注", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(我的关注-列表)");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(我的关注-列表)");
}
}
});

View File

@ -45,10 +45,17 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter<ConcernViewHol
private Toast toast;
private String entrance;
public ConcernRecommendAdapter(ConcernActivity activity) {
this.context = activity;
this.listener = activity;
entrance = activity.getIntent().getStringExtra("entrance");
if (activity.getIntent().getBundleExtra("data") != null) {
entrance = activity.getIntent().getBundleExtra("data").getString("entrance");
}
gameList = new ArrayList<>();
concernManager = new ConcernManager(context);
@ -168,7 +175,7 @@ public class ConcernRecommendAdapter extends RecyclerView.Adapter<ConcernViewHol
DataCollectionUtils.uploadClick(context, "推荐", "我的关注", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(我的关注-推荐)");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(我的关注-推荐)");
}
});
}

View File

@ -205,13 +205,13 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", newsEntity.getTitle());
kv.put("位置", String.valueOf(viewHolder.getPosition() + 1));
DataUtils.onEvent(context, "点击", "游戏新闻详情", kv);
DataUtils.onEvent(context, "点击", "游戏新闻列表", kv);
DataCollectionUtils.uploadClick(context, newsType, "游戏新闻详情", newsEntity.getTitle());
DataCollectionUtils.uploadClick(context, newsType, "游戏新闻列表", newsEntity.getTitle());
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(游戏新闻详情:" + newsType + ")");
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(游戏新闻列表:" + newsType + ")");
}
});
} else if (holder instanceof NewsFooterViewHolder){
@ -237,13 +237,13 @@ public class GameNewsAdapter extends RecyclerView.Adapter {
public void onClick(View v) {
String searchKey = ((GameNewsSearchViewHolder) holder).game_news_et_search.getText().toString().trim();
if (searchKey.length() >= 1) {
Intent intent = new Intent(context,NewsSearchActivity.class);
Intent intent = new Intent(context, NewsSearchActivity.class);
intent.putExtra("gameName", "搜索结果");
intent.putExtra("searchKey", searchKey);
intent.putExtra("gameId", gameId);
intent.putExtra("entrance", entrance + "+(游戏新闻详情:" + newsType + ")");
intent.putExtra("entrance", entrance + "+(游戏新闻列表:" + newsType + ")");
context.startActivity(intent);
}else {
} else {
Toast.makeText(context,"请输入关键字",Toast.LENGTH_SHORT).show();
}
}

View File

@ -88,18 +88,18 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", slideEntity.getName());
kv.put("位置", getPosition(position) + 1);
DataUtils.onEvent(context, "点击", "游戏-插件-滚动图", kv);
DataUtils.onEvent(context, "点击", "游戏-专题-滚动图", kv);
// 首页轮播图数据统计
DataLogUtils.uploadLunbotuLog(context, slideEntity.getType(),
slideEntity.getName(), String.valueOf(getPosition(position) + 1));
String entrance = "(游戏-专题:滚动图["
+ slideEntity.getName()
+ "=" + slideEntity.getType()
+ "=" + (getPosition(position) + 1)
+ "])";
if ("game".equals(slideEntity.getType())) {
String entrance = "(游戏-插件:滚动图["
+ slideEntity.getName()
+ "=" + slideEntity.getType()
+ "=" + (getPosition(position) + 1)
+ "])";
GameUtils.startGameDetailActivity(context, slideEntity.getLink(), entrance);
} else if ("news".equals(slideEntity.getType())) {
// 统计阅读量
@ -107,16 +107,13 @@ public class ImagePagerAdapter extends RecyclingPagerAdapter {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("newsId", slideEntity.getLink());
intent.putExtra("entrance", "(游戏-插件:滚动图["
+ slideEntity.getName()
+ "=" + slideEntity.getType()
+ "=" + (getPosition(position) + 1)
+ "])");
intent.putExtra("entrance", entrance);
context.startActivity(intent);
} else if ("column".equals(slideEntity.getType())) {
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", slideEntity.getLink());
intent.putExtra("name", slideEntity.getName());
intent.putExtra("entrance", entrance);
context.startActivity(intent);
}

View File

@ -53,12 +53,16 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
private List<LibaoInfo> mLibaoInfos;
private String entrance;
public LibaoDetailAdapter(LibaoDetailActivity libaoDetailActivity, LibaoEntity libaoEntity, TextView tvDownload) {
this.mContext = libaoDetailActivity;
this.mCallBackListener = libaoDetailActivity;
this.mLibaoEntity = libaoEntity;
this.mDownloadTv = tvDownload;
entrance = libaoDetailActivity.getIntent().getStringExtra("entrance");
mLibaoDao = new LibaoDao(mContext);
mLibaoInfos = mLibaoDao.getAll();
@ -256,7 +260,8 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
holder.libaoDes.setText(content);
if (mLibaoEntity.getStatus() != null && mLibaoDetailEntity != null) {
LibaoUtils.initLibaoBtn(holder.libaoCopyBtn, mLibaoEntity, mLibaoDao, mLibaoDetailEntity.getInstallRequired(), this);
LibaoUtils.initLibaoBtn(holder.libaoCopyBtn, mLibaoEntity, mLibaoDao,
mLibaoDetailEntity.getInstallRequired(), this, entrance + "+(礼包详情[" + mLibaoEntity.getName() + "])");
}
// 判断按钮状态是否为空(礼包详情进入),重新获取
@ -265,11 +270,12 @@ public class LibaoDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
@Override
public void postSucced(Object response) {
List<LibaoStatusEntity> statusList = (List<LibaoStatusEntity>) response;
if (statusList.size() == 0) return;
mLibaoEntity.setStatus(statusList.get(0).getStatus());
mLibaoEntity.setAvailable(statusList.get(0).getAvailable());
mLibaoEntity.setTotal(statusList.get(0).getTotal());
notifyItemChanged(0);
if (statusList.size() != 0) {
mLibaoEntity.setStatus(statusList.get(0).getStatus());
mLibaoEntity.setAvailable(statusList.get(0).getAvailable());
mLibaoEntity.setTotal(statusList.get(0).getTotal());
notifyItemChanged(0);
}
}
@Override

View File

@ -90,6 +90,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
private String userName; //用户名
private String userIcon; //用户icon
private String entrance;
private boolean isOver;
private boolean isLoading;
@ -115,6 +116,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
userName = sp.getString("user_name", null);
userIcon = sp.getString("user_icon", null);
entrance = context.getIntent().getStringExtra("entrance");
isOver = false;
isLoading = false;
@ -362,8 +364,9 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
} else {
viewHolder.imgLayout.setVisibility(View.VISIBLE);
viewHolder.imgLayout.removeAllViews();
ConcernContentUtils.addContentPic(mContext.getResources().getDisplayMetrics().widthPixels
- DisplayUtils.dip2px(mContext, 34), viewHolder.imgLayout, mConcernEntity.getImg(), mContext);
ConcernContentUtils.addContentPic(mContext, viewHolder.imgLayout, mConcernEntity.getImg(),
entrance + "+(消息详情[" + mConcernEntity.getGameName() + "])",
mContext.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(mContext, 34));
}
viewHolder.thumb.setImageURI(mConcernEntity.getGameIcon());
@ -390,6 +393,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
}
bundle.putStringArrayList("shareArrImg", (ArrayList<String>) mConcernEntity.getImg());
intent.putExtras(bundle);
intent.putExtra("entrance", entrance + "+(消息详情[" + mConcernEntity.getGameName() + "])");
mContext.startActivity(intent);
} else {
Intent intent = new Intent(mContext, ShareCardActivity.class);
@ -401,6 +405,7 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
bundle.putString("newsId", mConcernEntity.getId());
}
intent.putExtras(bundle);
intent.putExtra("entrance", entrance + "+(消息详情[" + mConcernEntity.getGameName() + "])");
mContext.startActivity(intent);
}
}
@ -423,11 +428,12 @@ public class MessageDetailAdapter extends RecyclerView.Adapter<RecyclerView.View
intent.putExtra("url", mConcernEntity.getLink());
intent.putExtra("gameName", mConcernEntity.getGameName());
intent.putExtra("newsId", mConcernEntity.getId());
intent.putExtra("entrance", entrance + "+(消息详情[" + mConcernEntity.getGameName() + "])");
mContext.startActivity(intent);
} else {
Intent intent = new Intent(mContext, NewsDetailActivity.class);
intent.putExtra("newsId", mConcernEntity.getId());
intent.putExtra("entrance", "(消息详情)");
intent.putExtra("entrance", entrance + "+(消息详情[" + mConcernEntity.getGameName() + "])");
mContext.startActivity(intent);
}
}

View File

@ -139,6 +139,7 @@ public class PlatformAdapter extends RecyclerView.Adapter<PlatformViewHolder> {
// 打开下载管理界面
Intent intent = new Intent(context, DownloadManagerActivity.class);
intent.putExtra("url", apkEntity.getUrl());
intent.putExtra("entrance", entrance + "(" + location.split(":")[0] + ")");
context.startActivity(intent);
} else if ("启动".equals(status)) {
Map<String, Object> kv = new HashMap<>();

View File

@ -33,6 +33,7 @@ import java.util.Map;
/**
* Created by LGT on 2016/7/6.
*
*/
public class PluginAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@ -179,12 +180,12 @@ public class PluginAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
DataCollectionUtils.uploadClick(context, "列表", "可以插件化的游戏", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(可以插件化的游戏)");
GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(插件化[" + (viewHolder.getPosition() + 1) + "])");
}
});
DownloadItemUtils.setOnClickListener(context, viewHolder.downloadBtn, gameEntity, position,
PluginAdapter.this, entrance + "+(可以插件化的游戏)", "可以插件化的游戏:" + gameEntity.getName());
PluginAdapter.this, entrance + "+(插件化[" + (viewHolder.getPosition() + 1) + "])", "插件化:" + gameEntity.getName());
DownloadItemUtils.updateItem(context, viewHolder.gameDes,
viewHolder.game_progressbar, viewHolder.game_ll_info, viewHolder.download_speed,

View File

@ -32,6 +32,7 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/12/5.
*
*/
public class StrategyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@ -42,6 +43,7 @@ public class StrategyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
private List<NewsEntity> mNewsList;
private String mGameId;
private String entrance;
private boolean isRemove;
private boolean isLoading;
@ -52,6 +54,8 @@ public class StrategyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
this.mGameId = gameId;
this.mNoData = noData;
entrance = strategyActivity.getIntent().getStringExtra("entrance");
mNewsList = new ArrayList<>();
isLoading = false;
@ -187,7 +191,7 @@ public class StrategyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(mStrategyActivity, newsEntity, "主页-游戏-攻略");
NewsUtils.startNewsDetailActivity(mStrategyActivity, newsEntity, entrance + "+(攻略[" + newsEntity.getTitle() + "])");
}
});
} else {
@ -227,10 +231,6 @@ public class StrategyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
}
public boolean isCanLoading() {
if (isNetworkError != true && isLoading != true && isRemove != true) {
return true;
} else {
return false;
}
return (!isNetworkError && !isLoading && !isRemove);
}
}

View File

@ -51,7 +51,6 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
private List<GameEntity> subjectList;
private ArrayMap<String, ArrayList<Integer>> locationMap;
private LibaoDao libaoDao;
@ -333,7 +332,7 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
DataCollectionUtils.uploadClick(context, "列表", name, gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + ")");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + "[" + (holder.getPosition() + 1) + "])");
}
});
@ -348,7 +347,7 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
DownloadItemUtils.setOnClickListener(context,
holder.downloadBtn, gameEntity, position,
SubjectAdapter.this, entrance + "+(" + name + ")", name + ":" + gameEntity.getName());
SubjectAdapter.this, entrance + "+(" + name + "[" + (holder.getPosition() + 1) + "])", name + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
@ -414,12 +413,12 @@ public class SubjectAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
DataCollectionUtils.uploadClick(context, "列表", name, gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + ")");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(" + name + "[" + (holder.getPosition() + 1) + "])");
}
});
DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
gameEntity, position, this, entrance + "+(" + name + ")", name + ":" + gameEntity.getName());
gameEntity, position, this, entrance + "+(" + name + "[" + (holder.getPosition() + 1) + "])", name + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info,

View File

@ -1,4 +1,4 @@
package com.gh.gamecenter.download;
package com.gh.gamecenter.adapter.viewholder;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -1,4 +1,4 @@
package com.gh.gamecenter.download;
package com.gh.gamecenter.adapter.viewholder;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -1,4 +1,4 @@
package com.gh.gamecenter.download;
package com.gh.gamecenter.adapter.viewholder;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -1,4 +1,4 @@
package com.gh.gamecenter.search;
package com.gh.gamecenter.adapter.viewholder;
import android.support.v7.widget.RecyclerView;
import android.view.View;

View File

@ -27,6 +27,8 @@ import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.download.DownloadStatus;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.DownloadHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameDownloadViewHolder;
import com.gh.gamecenter.eventbus.EBDownloadChanged;
import com.gh.gamecenter.manager.PackageManager;
@ -41,8 +43,9 @@ import de.greenrobot.event.EventBus;
/**
* Created by LGT on 2016/8/15.
*
*/
public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
@ -60,7 +63,7 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerVi
private int cardMargin;
public GameDownloadFragmentAdapter(Context context, LinearLayout textView, String url) {
GameDownloadFragmentAdapter(Context context, LinearLayout textView, String url) {
this.context = context;
this.url = url;
@ -475,7 +478,7 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerVi
}
// 显示插件化
public void showPluginDialog(final String path) {
void showPluginDialog(final String path) {
DialogUtils.showPluginDialog(context, new DialogUtils.ConfiremListener() {
@Override
public void onConfirem() {
@ -590,11 +593,11 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerVi
}
}
public List<DownloadEntity> getDownloadingList() {
List<DownloadEntity> getDownloadingList() {
return downloadingList;
}
public List<DownloadEntity> getDoneList() {
List<DownloadEntity> getDoneList() {
return doneList;
}
@ -602,15 +605,15 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerVi
return locationMap;
}
public Integer getLocation(String url) {
Integer getLocation(String url) {
return locationMap.get(url);
}
public ArrayMap<String, String> getStatusMap() {
ArrayMap<String, String> getStatusMap() {
return statusMap;
}
public ArrayMap<String, String> getUrlMap() {
ArrayMap<String, String> getUrlMap() {
return urlMap;
}
@ -618,11 +621,11 @@ public class GameDownloadFragmentAdapter extends RecyclerView.Adapter<RecyclerVi
return urlMap.get(packageName);
}
public ArrayList<String> getDeleteList() {
ArrayList<String> getDeleteList() {
return deleteList;
}
public void initMap() {
void initMap() {
downloadingList.clear();
doneList.clear();
statusMap.clear();

View File

@ -128,8 +128,7 @@ public class GameUpdateFragment extends Fragment {
reuse_nodata_skip.setVisibility(View.VISIBLE);
}
}
EventBus.getDefault().post(
new EBDownloadChanged("update", View.VISIBLE, -1));
EventBus.getDefault().post(new EBDownloadChanged("update", View.VISIBLE, -1));
}
adapter.initLocationMap();
}

View File

@ -1,5 +1,6 @@
package com.gh.gamecenter.download;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.support.v4.util.ArrayMap;
@ -25,6 +26,8 @@ import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.download.DownloadStatus;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.DownloadHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameUpdateViewHolder;
import com.gh.gamecenter.db.info.ConcernInfo;
import com.gh.gamecenter.entity.GameUpdateEntity;
import com.gh.gamecenter.eventbus.EBDownloadChanged;
@ -51,7 +54,7 @@ import rx.schedulers.Schedulers;
* Created by LGT on 2016/8/16.
*
*/
public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
@ -63,18 +66,24 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView
private List<GameUpdateEntity> updateList;
private String packageName;
private String entrance;
public GameUpdateFragmentAdapter(Context context,
LinearLayout loading,
LinearLayout none,
String packageName,
boolean isUpdate) {
this.context = context;
GameUpdateFragmentAdapter(Activity activity,
LinearLayout loading,
LinearLayout none,
String packageName,
boolean isUpdate) {
this.context = activity;
gameupdate_ll_loading = loading;
gameupdate_tv_none = none;
this.packageName = packageName;
entrance = activity.getIntent().getStringExtra("entrance");
if (activity.getIntent().getBundleExtra("data") != null) {
entrance = activity.getIntent().getBundleExtra("data").getString("entrance");
}
locationMap = new ArrayMap<>();
updateList = new ArrayList<>();
@ -363,8 +372,6 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView
if (updateEntity.getName().contains("光环助手")) {
viewHolder.gu_item_iv_icon.setImageResource(R.drawable.logo);
} else {
// ImageUtils.getInstance(context).display(
// updateEntity.getIcon(), viewHolder.gu_item_iv_icon);
viewHolder.gu_item_iv_icon.setImageURI(updateEntity.getIcon());
}
@ -441,41 +448,41 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView
DownloadEntity downloadEntity = DownloadManager.getInstance(context).get(updateEntity.getUrl());
if (downloadEntity == null) {
if (updateEntity.isPluggable()) {
viewHolder.gu_item_btv_update.setText("插件化");
viewHolder.gu_item_btv_update.setTextColor(Color.WHITE);
downloadEntity = DownloadManager.getInstance(context).getByPackage(
updateEntity.getPackageName());
if (downloadEntity == null
|| downloadEntity.getUrl().equals(updateEntity.getUrl())) {
viewHolder.gu_item_btv_update.setClickable(true);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugin_style);
if (PackageManager.isCanUpdate(updateEntity.getId(), updateEntity.getPackageName())) {
if (updateEntity.isPluggable()) {
viewHolder.gu_item_btv_update.setText("插件化");
viewHolder.gu_item_btv_update.setTextColor(Color.WHITE);
downloadEntity = DownloadManager.getInstance(context).getByPackage(
updateEntity.getPackageName());
if (downloadEntity == null
|| downloadEntity.getUrl().equals(updateEntity.getUrl())) {
viewHolder.gu_item_btv_update.setClickable(true);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugin_style);
} else {
viewHolder.gu_item_btv_update.setClickable(false);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_pause_up);
}
} else {
viewHolder.gu_item_btv_update.setClickable(false);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_pause_up);
viewHolder.gu_item_btv_update.setText("更新");
viewHolder.gu_item_btv_update.setTextColor(Color.WHITE);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_download_style);
}
} else {
viewHolder.gu_item_btv_update.setText("更新");
viewHolder.gu_item_btv_update.setTextColor(Color.WHITE);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_download_style);
}
} else {
if (PackageManager.isCanUpdate(updateEntity.getId(), updateEntity.getPackageName())) {
viewHolder.gu_item_btv_update.setText("启动");
viewHolder.gu_item_btv_update.setTextColor(Color.WHITE);
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_launch_style);
}
} else {
if (updateEntity.isPluggable()) {
viewHolder.gu_item_btv_update.setText("插件化中");
viewHolder.gu_item_btv_update.setTextColor(
context.getResources().getColorStateList(R.color.text_plugining_style));
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugining_style);
} else {
if (updateEntity.isPluggable()) {
viewHolder.gu_item_btv_update.setText("插件化中");
viewHolder.gu_item_btv_update.setTextColor(
context.getResources().getColorStateList(R.color.text_plugining_style));
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_plugining_style);
} else {
viewHolder.gu_item_btv_update.setText("更新中");
viewHolder.gu_item_btv_update.setTextColor(
context.getResources().getColorStateList(R.color.text_downloading_style));
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_downloading_style);
}
viewHolder.gu_item_btv_update.setText("更新中");
viewHolder.gu_item_btv_update.setTextColor(
context.getResources().getColorStateList(R.color.text_downloading_style));
viewHolder.gu_item_btv_update.setBackgroundResource(R.drawable.game_item_btn_downloading_style);
}
}
@ -547,7 +554,8 @@ public class GameUpdateFragmentAdapter extends RecyclerView.Adapter<RecyclerView
} else {
downloadEntity.setUpdate(true);
}
downloadEntity.setEntrance("(下载管理:游戏更新)");
downloadEntity.setEntrance(entrance + "+(下载管理:游戏更新)");
downloadEntity.setLocation("游戏更新:列表");
if (updateEntity.getName().contains("光环助手")) {
DownloadManager.getInstance(context).pauseAll();

View File

@ -24,6 +24,16 @@ public class ApkEntity {
private GameCollectionEntity apkCollection;
private int order;
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public GameCollectionEntity getApkCollection() {
return apkCollection;
}

View File

@ -1,299 +0,0 @@
package com.gh.gamecenter.game;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.BaseFragment;
import com.gh.common.util.DownloadItemUtils;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.eventbus.EBDownloadStatus;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBUISwitch;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* Created by khy on 2016/6/27.
* 游戏-插件界面
*/
public class Game1Fragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
@BindView(R.id.fm_game_swipe_refresh) SwipeRefreshLayout fm_game_swipe_refresh;
@BindView(R.id.fm_game_rv_list) RecyclerView fm_game_rv_list;
@BindView(R.id.reuse_no_connection) LinearLayout reuse_no_connection;
@BindView(R.id.fm_game_pb_loading) ProgressBarCircularIndeterminate fm_game_pb_loading;
private Game1FragmentAdapter adapter;
private int currentItem;
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
if (!fm_game_swipe_refresh.isRefreshing()) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
if (locationList != null && locationList.size() != 0) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null) {
DownloadItemUtils.processDate(getActivity(), gameEntity,
downloadEntity, adapter, location);
}
}
}
}
}
};
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init(R.layout.fragment_game);
currentItem = 0;
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
});
fm_game_swipe_refresh.setColorSchemeResources(R.color.theme);
fm_game_swipe_refresh.setOnRefreshListener(this);
fm_game_rv_list.setHasFixedSize(true);
fm_game_rv_list.setLayoutManager(new LinearLayoutManager(getActivity()));
adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh);
fm_game_rv_list.setAdapter(adapter);
fm_game_rv_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE){
Fresco.getImagePipeline().resume();
}else {
Fresco.getImagePipeline().pause();
}
}
});
}
@Override
public void loadDone() {
if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) {
fm_game_swipe_refresh.setRefreshing(false);
}
if (fm_game_pb_loading != null && fm_game_pb_loading.getVisibility() == View.VISIBLE) {
fm_game_pb_loading.setVisibility(View.GONE);
}
}
@Override
public void loadError() {
fm_game_rv_list.setVisibility(View.GONE);
fm_game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.VISIBLE);
}
//下载被删除事件
public void onEventMainThread(EBDownloadStatus status) {
if ("delete".equals(status.getStatus())) {
DownloadManager.getInstance(getActivity()).removePlatform(status.getName(), status.getPlatform());
ArrayList<Integer> locationList = adapter.getLocationMap().get(status.getPackageName());
GameEntity gameEntity;
if (locationList != null && locationList.size() != 0) {
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null && gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(status.getPlatform());
}
adapter.notifyItemChanged(location);
}
}
} else if ("plugin".equals(status.getStatus())) {
handler.postDelayed(initPluginRunnable, 100);
}
}
Runnable initPluginRunnable = new Runnable() {
@Override
public void run() {
if (adapter.isInitPlugin()) {
handler.postDelayed(initPluginRunnable, 100);
} else {
adapter.initPlugin();
}
}
};
//安装、卸载事件
public void onEventMainThread(EBPackage busFour) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(busFour.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null) {
if (gameEntity.isPluggable()) {
// 插件化列表
if ("安装".equals(busFour.getType()) || "卸载".equals(busFour.getType())) {
List<GameEntity> list = adapter.getPluginList();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getApk().get(0).getPackageName().equals(busFour.getPackageName())) {
if ("卸载".equals(busFour.getType())
&& DownloadManager.getInstance(getActivity()).get(
list.get(i).getApk().get(0).getUrl()) != null) {
adapter.notifyItemChanged(2 + i);
} else {
list.remove(i);
if (list.isEmpty()) {
adapter.initItemCount();
adapter.notifyItemRangeRemoved(1, 2);
} else {
adapter.initItemCount();
adapter.notifyItemRemoved(location);
adapter.notifyItemChanged(1);
}
}
break;
}
}
}
} else {
if ("安装".equals(busFour.getType())) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
if (apkEntity.getPackageName().equals(busFour.getPackageName())) {
if (gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(apkEntity.getPlatform());
}
adapter.notifyItemChanged(location);
break;
}
}
} else if ("卸载".equals(busFour.getType())) {
adapter.notifyItemChanged(location);
}
}
}
}
adapter.initLocationMap();
}
}
//连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
} else if (adapter.isNetworkError()) {
adapter.setNetworkError(false);
adapter.notifyItemChanged(adapter.getItemCount() - 1);
adapter.initSlide(true);
}
}
}
// 打开下载按钮事件
public void onEventMainThread(EBReuse reuse) {
if (("Refresh".equals(reuse.getType()) || "PlatformChanged".equals(reuse.getType()))
&& adapter != null) {
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
}
//Fragment界面切换事件
public void onEventMainThread(EBUISwitch busNine) {
if ("MainActivity".equals(busNine.getFrom())) {
if (busNine.getPosition() == 0) {
adapter.startAutoScroll();
} else {
adapter.stopAutoScroll();
}
} else if ("GameFragment".equals(busNine.getFrom())) {
currentItem = busNine.getPosition();
if (busNine.getPosition() == 0) {
adapter.startAutoScroll();
if (fm_game_pb_loading.getVisibility() == View.VISIBLE) {
adapter.initSlide(true);
}
} else {
adapter.stopAutoScroll();
}
}
}
@Override
public void onResume() {
if (isEverpause) {
for (SubjectEntity subjectEntity : adapter.getSubjectList()) {
for (GameEntity entity :subjectEntity.getData()) {
entity.setEntryMap(DownloadManager.getInstance(getActivity()).getEntryMap(entity.getName()));
}
}
for (GameEntity entity : adapter.getPluginList()) {
entity.setEntryMap(DownloadManager.getInstance(getActivity()).getEntryMap(entity.getName()));
}
adapter.notifyDataSetChanged();
}
super.onResume();
DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
if (currentItem == 0) {
adapter.startAutoScroll();
}
}
@Override
public void onPause() {
super.onPause();
DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
if (currentItem == 0) {
adapter.stopAutoScroll();
}
}
Runnable runnable = new Runnable() {
@Override
public void run() {
adapter = new Game1FragmentAdapter(Game1Fragment.this, fm_game_swipe_refresh);
fm_game_rv_list.setAdapter(adapter);
adapter.initSlide(true);
}
};
@Override
public void onRefresh() {
handler.postDelayed(runnable, 1000);
}
}

View File

@ -1,976 +0,0 @@
package com.gh.gamecenter.game;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.support.v4.util.ArrayMap;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.DownloadItemUtils;
import com.gh.common.util.GameUtils;
import com.gh.common.util.GameViewUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.NewsUtils;
import com.gh.common.util.PlatformUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.NewsDetailActivity;
import com.gh.gamecenter.PluginActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SubjectActivity;
import com.gh.gamecenter.adapter.ImagePagerAdapter;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameViewPagerViewHolder;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.GameUpdateEntity;
import com.gh.gamecenter.entity.SlideEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.listener.OnCallBackListener;
import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.manager.PackageManager;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
* Created by LGT on 2016/7/1.
* 游戏-插件-数据适配器
*/
public class Game1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Game1Fragment fragment;
private Context context;
private OnCallBackListener listener;
private SwipeRefreshLayout game_swipe_refresh;
private List<SlideEntity> slideList;
private List<GameEntity> pluginList;
private List<SubjectEntity> subjectList;
// 包名对应游戏位置
private ArrayMap<String, ArrayList<Integer>> locationMap;
private int itemCount;
private int pluginSize;
private int cardMargin;
private boolean isNetworkError;
private boolean isSlideError;
private boolean isListError;
private boolean isOver;
private boolean isInitPlugin;
private boolean isAutoScroll;
public Game1FragmentAdapter(Game1Fragment fragment,
SwipeRefreshLayout refreshLayout) {
this.fragment = fragment;
this.context = fragment.getActivity();
this.listener = fragment;
game_swipe_refresh = refreshLayout;
slideList = new ArrayList<>();
pluginList = new ArrayList<>();
subjectList = new ArrayList<>();
locationMap = new ArrayMap<>();
itemCount = 0;
pluginSize = 0;
isNetworkError = false;
isSlideError = false;
isListError = false;
isOver = false;
isInitPlugin = false;
isAutoScroll = false;
cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin);
}
public ArrayMap<String, ArrayList<Integer>> getLocationMap() {
return locationMap;
}
public GameEntity getGameEntityByLocation(int location) {
if (!pluginList.isEmpty() && location > 1 && location <= 1 + pluginList.size()) {
return pluginList.get(location - 2);
}
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (location > offset && location <= subjectList.get(i).getData().size() + offset) {
return subjectList.get(i).getData().get(location - offset - 1);
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
return null;
}
public void initSlide(final boolean isFirst) {
RetrofitManager.getApi().getSlide()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<List<SlideEntity>>() {
@Override
public void onResponse(List<SlideEntity> response) {
slideList = response;
if (slideList.size() != 0) {
notifyItemChanged(0);
}
if (isFirst) {
initSubjectList();
}
}
@Override
public void onFailure(HttpException e) {
isSlideError = true;
showView();
if (isFirst) {
initSubjectList();
}
}
});
}
private void initSubjectList() {
RetrofitManager.getApi().getChajian()
.map(new Func1<List<SubjectEntity>, List<SubjectEntity>>() {
@Override
public List<SubjectEntity> call(List<SubjectEntity> list) {
GameManager manager = new GameManager(context);
SubjectEntity subjectEntity;
GameEntity gameEntity;
for (int j = 0; j < list.size(); j++) {
subjectEntity = list.get(j);
if (subjectEntity.getData().size() == 1
&& !TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())){
list.remove(j);
j--;
continue;
}
for (int i = 0; i < subjectEntity.getData().size(); i++) {
gameEntity = subjectEntity.getData().get(i);
if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
gameEntity.setEntryMap(DownloadManager.getInstance(context).getEntryMap(gameEntity.getName()));
manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName());
} else if (TextUtils.isEmpty(gameEntity.getId())) {
if (TextUtils.isEmpty(gameEntity.getType())
|| TextUtils.isEmpty(gameEntity.getLink())
|| TextUtils.isEmpty(gameEntity.getName())
|| TextUtils.isEmpty(gameEntity.getImage())) {
subjectEntity.getData().remove(i);
i--;
}
}
}
}
return list;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<List<SubjectEntity>>() {
@Override
public void onResponse(List<SubjectEntity> response) {
if (response.size() != 0) {
if (!fragment.isHidden() && !fragment.isEverpause()) {
if (pluginList.isEmpty()) {
subjectList = response;
initItemCount();
notifyItemRangeInserted(1, getItemCount() - 2);
} else {
int start = 2 + pluginList.size();
subjectList = response;
initItemCount();
notifyItemRangeInserted(start, getItemCount() - start - 1);
}
} else {
subjectList = response;
initItemCount();
notifyDataSetChanged();
}
initLocationMap();
}
if (listener != null) {
listener.loadDone();
}
isOver = true;
notifyItemChanged(getItemCount() - 1);
initPlugin();
}
@Override
public void onFailure(HttpException e) {
if (listener != null) {
listener.loadDone();
}
isListError = true;
isNetworkError = true;
showView();
}
});
}
public void initPlugin() {
if (isInitPlugin) {
return;
}
isInitPlugin = true;
ArrayList<GameUpdateEntity> updateList = PackageManager.getUpdateList();
if (updateList.isEmpty()) {
isInitPlugin = false;
return;
}
List<GameEntity> list = new ArrayList<>();
GameUpdateEntity gameUpdateEntity;
pluginSize = 0;
for (int i = 0, size= updateList.size(); i < size; i++) {
gameUpdateEntity = updateList.get(i);
if (gameUpdateEntity.isPluggable()) {
pluginSize++;
if (list.size() < 3) {
GameEntity gameEntity = new GameEntity();
gameEntity.setId(gameUpdateEntity.getId());
gameEntity.setName(gameUpdateEntity.getName());
gameEntity.setIcon(gameUpdateEntity.getIcon());
gameEntity.setTag(gameUpdateEntity.getTag());
gameEntity.setBrief(gameUpdateEntity.getBrief());
gameEntity.setPluggable(true);
ApkEntity apkEntity = new ApkEntity();
apkEntity.setUrl(gameUpdateEntity.getUrl());
apkEntity.setPackageName(gameUpdateEntity.getPackageName());
apkEntity.setSize(gameUpdateEntity.getSize());
apkEntity.setVersion(gameUpdateEntity.getVersion());
apkEntity.setGhVersion(gameUpdateEntity.getGhVersion());
apkEntity.setPlatform(gameUpdateEntity.getPlatform());
apkEntity.setEtag(gameUpdateEntity.getEtag());
ArrayList<ApkEntity> apk = new ArrayList<>();
apk.add(apkEntity);
gameEntity.setApk(apk);
list.add(gameEntity);
}
}
}
if (!list.isEmpty()) {
for (GameEntity gEntity : list) {
gEntity.setEntryMap(DownloadManager.getInstance(context).
getEntryMap(gEntity.getName()));
}
if (pluginList.isEmpty()) {
pluginList = list;
initItemCount();
notifyItemRangeInserted(1, pluginList.size() + 1);
if (getItemCount() > pluginList.size() + 2) {
notifyItemChanged(pluginList.size() + 2);
}
} else {
pluginList = list;
notifyDataSetChanged();
}
initLocationMap();
}
isInitPlugin = false;
}
private void showView() {
if (isSlideError && isListError) {
Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
listener.loadError();
} else if (isSlideError) {
Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
notifyItemChanged(0);
} else if (isListError) {
Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
notifyItemChanged(getItemCount() - 1);
}
}
public void initLocationMap() {
locationMap.clear();
int count = getItemCount();
if (!pluginList.isEmpty()) {
GameEntity gameEntity;
ArrayList<Integer> list;
for (int position = 0, size = pluginList.size(); position < size; position++) {
gameEntity = pluginList.get(position);
if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
list = locationMap.get(apkEntity.getPackageName());
if (list == null) {
list = new ArrayList<>();
locationMap.put(apkEntity.getPackageName(), list);
}
list.add(position + 2);
}
}
}
}
if (!subjectList.isEmpty()) {
int offset;
GameEntity gameEntity;
ArrayList<Integer> list;
for (int position = 0; position < count; position++) {
offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
list = locationMap.get(apkEntity.getPackageName());
if (list == null) {
list = new ArrayList<>();
locationMap.put(apkEntity.getPackageName(), list);
}
list.add(position);
}
}
break;
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
}
}
public void initItemCount() {
int pluginSize = 0;
if (!pluginList.isEmpty()) {
pluginSize += 1 + pluginList.size();
}
int subjectSize = 0;
if (!subjectList.isEmpty()) {
SubjectEntity subjectEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
subjectEntity = subjectList.get(i);
subjectSize += 1 + subjectEntity.getData().size();
}
}
itemCount = pluginSize + subjectSize;
}
@Override
public int getItemCount() {
return 1 + itemCount + 1;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return ItemViewType.GAME_SLIDE;
}
if (!pluginList.isEmpty()) {
if (position == 1) {
return ItemViewType.COLUMN_HEADER;
}
if (position > 1 && position <= 1 + pluginList.size()) {
return ItemViewType.GAME_NORMAL;
}
}
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position -offset-1;
if (index<0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())){
return ItemViewType.GAME_IMAGE;
}else if (position == offset){
return ItemViewType.COLUMN_HEADER;
}
if (position == offset+1&&!TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())){
return ItemViewType.COLUMN_HEADER;
}
if (!TextUtils.isEmpty(gameEntity.getImage())) {
return ItemViewType.GAME_IMAGE;
}
if (gameEntity.getTest() != null) {
return ItemViewType.GAME_TEST;
}
return ItemViewType.GAME_NORMAL;
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
return ItemViewType.LOADING;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ItemViewType.GAME_SLIDE) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.game_viewpager_item, parent, false);
DisplayMetrics outMetrics = new DisplayMetrics();
fragment.getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, (int) (outMetrics.widthPixels / 16f * 7f));
view.setLayoutParams(params);
return new GameViewPagerViewHolder(view);
} else if (viewType == ItemViewType.COLUMN_HEADER) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.game_head_item, parent, false);
return new GameHeadViewHolder(view);
} else if (viewType == ItemViewType.GAME_NORMAL) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.game_normal_item, parent, false);
return new GameNormalViewHolder(view);
} else if (viewType == ItemViewType.GAME_TEST) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.game_test_item, parent, false);
return new GameTestViewHolder(view);
} else if (viewType == ItemViewType.GAME_IMAGE) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.game_image_item, parent, false);
return new GameImageViewHolder(view);
} else if (viewType == ItemViewType.LOADING){
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.refresh_footerview, parent, false);
return new FooterViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof GameViewPagerViewHolder) {
initGameViewPagerViewHolder((GameViewPagerViewHolder) holder);
} else if (holder instanceof GameHeadViewHolder) {
initGameHeadViewHolder((GameHeadViewHolder) holder, position);
} else if (holder instanceof GameImageViewHolder) {
initGameImageViewHolder((GameImageViewHolder) holder, position);
} else if (holder instanceof GameNormalViewHolder){
initGameNormalViewHolder((GameNormalViewHolder) holder, position);
} else if (holder instanceof GameTestViewHolder) {
initGameTestViewHolder((GameTestViewHolder) holder, position);
} else if (holder instanceof FooterViewHolder) {
initFooterViewHolder((FooterViewHolder) holder);
}
}
private void initGameViewPagerViewHolder(final GameViewPagerViewHolder viewHolder) {
if (isSlideError) {
viewHolder.viewpager_tv_failure.setVisibility(View.VISIBLE);
viewHolder.viewPager.setVisibility(View.GONE);
viewHolder.viewpager_ll_hint.setVisibility(View.GONE);
} else {
viewHolder.viewpager_tv_failure.setVisibility(View.GONE);
viewHolder.viewPager.setVisibility(View.VISIBLE);
viewHolder.viewpager_ll_hint.setVisibility(View.VISIBLE);
}
if (slideList.size() != 0 && viewHolder.viewPager.getAdapter() == null) {
viewHolder.viewpager_ll_hint.removeAllViews();
for (int i = 0, size = slideList.size(); i < size; i++) {
ImageView imageView = new ImageView(context);
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
DisplayUtils.dip2px(context, 6), DisplayUtils.dip2px(context, 6));
lparams.bottomMargin = DisplayUtils.dip2px(context, 6);
if (i == 0) {
imageView.setImageResource(R.drawable.oval_hint_up);
} else {
imageView.setImageResource(R.drawable.oval_hint_dn);
}
if (i != 0) {
lparams.leftMargin = DisplayUtils.dip2px(context, 6);
}
imageView.setLayoutParams(lparams);
viewHolder.viewpager_ll_hint.addView(imageView);
}
viewHolder.viewPager.setAdapter(new ImagePagerAdapter(context, slideList, true));
viewHolder.viewPager.setInterval(3000);
viewHolder.viewPager.startAutoScroll();
viewHolder.viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
for (int i = 0, size = viewHolder.viewpager_ll_hint.getChildCount(); i < size; i++) {
if (i == position % size) {
((ImageView) viewHolder.viewpager_ll_hint.getChildAt(i))
.setImageResource(R.drawable.oval_hint_up);
} else {
((ImageView) viewHolder.viewpager_ll_hint.getChildAt(i))
.setImageResource(R.drawable.oval_hint_dn);
}
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageScrollStateChanged(int state) {
// 解决viewpager和SwipeRefreshLayout滑动冲突
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
game_swipe_refresh.setEnabled(false);
} else {
game_swipe_refresh.setEnabled(true);
}
}
});
viewHolder.viewpager_tv_failure.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isSlideError = false;
notifyItemChanged(0);
initSlide(false);
}
});
}
if (isAutoScroll) {
viewHolder.viewPager.startAutoScroll();
} else {
viewHolder.viewPager.stopAutoScroll();
}
}
private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
if (gameEntity.getTest() != null) {
int order = position - offset - 1;
if (subjectList.get(i).getData().get(0).getImage() != null) {
order--;
}
initGameTest(holder, gameEntity, order, subjectList.get(i), i + 1 == size);
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initGameTest(GameTestViewHolder holder, final GameEntity gameEntity,
final int i, final SubjectEntity subjectEntity, boolean isBottom) {
// 最后一个
((CardLinearLayout) holder.itemView).setBottom(isBottom);
if (TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())) {
if (i + 1 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
} else {
if (i + 2 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
}
if (subjectEntity.isOrder()) {
holder.home2_game_order.setVisibility(View.VISIBLE);
holder.home2_game_order.setText(String.valueOf(i + 1));
} else {
holder.home2_game_order.setVisibility(View.GONE);
}
holder.gameThumb.setImageURI(gameEntity.getImage());
holder.gameNameAndSize.setText(gameEntity.getName());
if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
holder.gameDes.setText(gameEntity.getBrief());
} else {
holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
}
holder.gameTestType.setText(gameEntity.getTest().getType());
if (gameEntity.getTest().getStart() == 0) {
holder.gameTestTime.setVisibility(View.GONE);
} else {
holder.gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart()));
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-插件:" + subjectEntity.getName() + "-列表)");
}
});
if (gameEntity.getTest().getEnd() != 0) {
long endTime = Long.valueOf(gameEntity.getTest().getEnd() + "000");
long todayTime = new Date().getTime();
if (todayTime > endTime) {
// 测试时间已过
gameEntity.setApk(null);
}
}
DownloadItemUtils.setOnClickListener(context,
holder.downloadBtn, gameEntity, i,
Game1FragmentAdapter.this, "(游戏-插件:" + subjectEntity.getName() + "-列表)",
"游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
holder.download_percentage, holder.downloadBtn, gameEntity);
}
private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
GameEntity gameEntity;
if (!pluginList.isEmpty() && position > 1 && position <= 1 + pluginList.size()) {
gameEntity = pluginList.get(position - 2);
SubjectEntity subjectEntity = new SubjectEntity();
subjectEntity.setOrder(false);
subjectEntity.setName("插件化");
subjectEntity.setData(pluginList);
initGameNormal(holder, gameEntity, position - 2, subjectEntity, false);
return;
}
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position -offset-1;
if (index<0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
int order = position - offset - 1;
if (subjectList.get(i).getData().get(0).getImage() != null) {
order--;
}
initGameNormal(holder, gameEntity, order, subjectList.get(i), i + 1 == size);
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initGameNormal(GameNormalViewHolder holder, final GameEntity gameEntity,
final int i, final SubjectEntity subjectEntity, boolean isBottom) {
// 最后一个
((CardLinearLayout) holder.itemView).setBottom(isBottom);
if (TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())) {
if (i + 1 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
} else {
if (i + 2 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
}
if (subjectEntity.isOrder()) {
holder.home1_game_order.setVisibility(View.VISIBLE);
holder.home1_game_order.setText(String.valueOf(i + 1));
} else {
holder.home1_game_order.setVisibility(View.GONE);
}
holder.gameThumb.setImageURI(gameEntity.getIcon());
if (gameEntity.isPluggable()) {
holder.gameNameAndSize.setText(String.format("%s - %s", gameEntity.getName(),
PlatformUtils.getInstance(context).getPlatformName(
gameEntity.getApk().get(0).getPlatform())));
} else {
holder.gameNameAndSize.setText(gameEntity.getName());
}
if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
holder.gameDes.setText(gameEntity.getBrief());
} else {
holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
}
GameViewUtils.setLabelList(context, holder.labelList, gameEntity.getTag());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName());
if (gameEntity.isPluggable()) {
GameUtils.startGameDetailActivity(context, gameEntity.getId(), "(游戏-插件:" + subjectEntity.getName() + "-列表)");
} else {
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-插件:" + subjectEntity.getName() + "-列表)");
}
}
});
DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, gameEntity, i,
Game1FragmentAdapter.this, "(游戏-插件:" + subjectEntity.getName() + "-列表)",
"游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
holder.download_percentage, holder.downloadBtn, gameEntity, !gameEntity.isPluggable());
}
public void initGameImageViewHolder(GameImageViewHolder holder, int position) {
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset - 1;
if (index<0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())) {
if (i == 0) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmTop(0);
}
final GameEntity entity = gameEntity;
final String name = subjectList.get(i).getName();
String tag = entity.getImage();
holder.image.setTag(tag);
ImageUtils.getInstance().display(holder.image, entity.getImage(),
context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 16));
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", entity.getName());
kv.put("位置", "大图");
DataUtils.onEvent(context, "点击", "游戏-插件-" + name, kv);
DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-插件");
if ("game".equals(entity.getType())) {
GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-插件:" + name + "-大图)");
} else if ("news".equals(entity.getType())) {
// 统计阅读量
NewsUtils.statNewsViews(entity.getLink());
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("newsId", entity.getLink());
intent.putExtra("entrance", "(游戏-插件:" + name + "-大图)");
context.startActivity(intent);
} else if ("column".equals(entity.getType())) {
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", entity.getLink());
intent.putExtra("name", entity.getName());
intent.putExtra("entrance", "(游戏-插件:" + name + "-大图)");
context.startActivity(intent);
}
}
});
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
public void initGameHeadViewHolder(GameHeadViewHolder holder, int position) {
if (!pluginList.isEmpty() && position == 1) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
holder.title.setTextColor(Color.parseColor("#00b7fa"));
holder.thumb.setVisibility(View.VISIBLE);
holder.thumb.setImageResource(R.drawable.home_plug_upgrade);
holder.title.setText(String.format(Locale.getDefault(), "你有%d个游戏可以升级插件版", pluginSize));
if (pluginSize <= 3) {
holder.link.setVisibility(View.GONE);
} else {
holder.link.setVisibility(View.VISIBLE);
holder.link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PluginActivity.class);
intent.putExtra("entrance", "(游戏-插件:插件化-全部)");
context.startActivity(intent);
}
});
}
return;
}
int offset = 1;
GameEntity gameEntity;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
}
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset){
int index = position - offset - 1;
if (index < 0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && TextUtils.isEmpty(gameEntity.getImage()) || position == offset + 1
&& !TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) {
if (TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())
&& pluginList.isEmpty() && i == 0) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmTop(0);
}
holder.thumb.setVisibility(View.GONE);
holder.title.setText(subjectList.get(i).getName());
holder.title.setTextColor(Color.BLACK);
final int ii = i;
if (subjectList.get(i).getData().size()>= Integer.parseInt(subjectList.get(i).getMore())){
holder.link.setVisibility(View.GONE);
}else {
holder.link.setVisibility(View.VISIBLE);
}
holder.link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SubjectEntity subjectEntity = subjectList.get(ii);
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", subjectEntity.getId());
intent.putExtra("name", subjectEntity.getName());
intent.putExtra("order",subjectEntity.isOrder());
intent.putExtra("entrance", "(游戏-插件:" + subjectEntity.getName() + "-全部)");
context.startActivity(intent);
}
});
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initFooterViewHolder(FooterViewHolder holder) {
if (isNetworkError) {
holder.lineLeft.setVisibility(View.GONE);
holder.lineRight.setVisibility(View.GONE);
holder.loading.setVisibility(View.GONE);
holder.hint.setText("加载失败,点击重试");
holder.itemView.setClickable(true);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isNetworkError = false;
notifyItemChanged(getItemCount() - 1);
initSubjectList();
}
});
} else if (isOver) {
holder.lineLeft.setVisibility(View.VISIBLE);
holder.lineRight.setVisibility(View.VISIBLE);
holder.loading.setVisibility(View.GONE);
holder.hint.setText("到底了哦~");
holder.itemView.setClickable(false);
} else {
holder.lineLeft.setVisibility(View.GONE);
holder.lineRight.setVisibility(View.GONE);
holder.loading.setVisibility(View.VISIBLE);
holder.hint.setText("加载中...");
holder.itemView.setClickable(false);
}
}
public void startAutoScroll() {
isAutoScroll = true;
notifyItemChanged(0);
}
public void stopAutoScroll() {
isAutoScroll = false;
notifyItemChanged(0);
}
public List<GameEntity> getPluginList() {
return pluginList;
}
public List<SubjectEntity> getSubjectList() {
return subjectList;
}
public boolean isNetworkError() {
return isNetworkError;
}
public void setNetworkError(boolean networkError) {
isNetworkError = networkError;
}
public boolean isInitPlugin() {
return isInitPlugin;
}
}

View File

@ -1,222 +0,0 @@
package com.gh.gamecenter.game;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.BaseFragment;
import com.gh.common.util.DownloadItemUtils;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.eventbus.EBDownloadStatus;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBUISwitch;
import java.util.ArrayList;
import butterknife.BindView;
/**
* Created by khy on 2016/6/28.
*/
public class Game2Fragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
@BindView(R.id.fm_game_swipe_refresh) SwipeRefreshLayout fm_game_swipe_refresh;
@BindView(R.id.fm_game_rv_list) RecyclerView fm_game_rv_list;
private Game2FragmentAdapter adapter;
@BindView(R.id.reuse_no_connection) LinearLayout reuse_no_connection;
@BindView(R.id.fm_game_pb_loading) ProgressBarCircularIndeterminate fm_game_pb_loading;
DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
if (!fm_game_swipe_refresh.isRefreshing()) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
if (locationList != null && locationList.size() != 0) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null) {
DownloadItemUtils.processDate(getActivity(), gameEntity,
downloadEntity, adapter, location);
}
}
}
}
}
};
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init(R.layout.fragment_game);
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
});
fm_game_swipe_refresh.setColorSchemeResources(R.color.theme);
fm_game_swipe_refresh.setOnRefreshListener(this);
fm_game_rv_list.setHasFixedSize(true);
fm_game_rv_list.setLayoutManager(new LinearLayoutManager(getActivity()));
adapter = new Game2FragmentAdapter(Game2Fragment.this, false);
fm_game_rv_list.setAdapter(adapter);
}
@Override
public void loadDone() {
if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) {
fm_game_swipe_refresh.setRefreshing(false);
}
if (fm_game_pb_loading != null && fm_game_pb_loading.getVisibility() == View.VISIBLE) {
fm_game_pb_loading.setVisibility(View.GONE);
}
}
@Override
public void loadError() {
Toast.makeText(getActivity(), "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) {
fm_game_swipe_refresh.setRefreshing(false);
}
if (fm_game_pb_loading != null && fm_game_pb_loading.getVisibility() == View.VISIBLE) {
fm_game_pb_loading.setVisibility(View.GONE);
}
fm_game_rv_list.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.VISIBLE);
}
//下载被删除事件
public void onEventMainThread(EBDownloadStatus status) {
if ("delete".equals(status.getStatus())) {
DownloadManager.getInstance(getActivity()).removePlatform(status.getName(), status.getPlatform());
ArrayList<Integer> locationList = adapter.getLocationMap().get(status.getPackageName());
if (locationList != null && locationList.size() != 0) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null && gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(status.getPlatform());
}
adapter.notifyItemChanged(location);
}
}
}
}
// 打开下载按钮事件
public void onEventMainThread(EBReuse reuse) {
if ("Refresh".equals(reuse.getType()) && adapter != null) {
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
}
//安装、卸载事件
public void onEventMainThread(EBPackage busFour) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(busFour.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameEntityByLocation(location);
if (gameEntity != null) {
if ("安装".equals(busFour.getType())) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
if (apkEntity.getPackageName().equals(busFour.getPackageName())) {
if (gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(apkEntity.getPlatform());
}
adapter.notifyItemChanged(location);
break;
}
}
} else if ("卸载".equals(busFour.getType())) {
adapter.notifyItemChanged(location);
}
}
}
}
}
//连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
}
}
//Fragment界面切换事件
public void onEventMainThread(EBUISwitch busNine) {
if ("GameFragment".equals(busNine.getFrom())) {
if (busNine.getPosition() == 1) {
if (fm_game_pb_loading.getVisibility() == View.VISIBLE) {
adapter.initSubjectList();
}
}
}
}
@Override
public void onResume() {
if (isEverpause) {
for (SubjectEntity subjectEntity : adapter.getSubectList()) {
for (GameEntity entity :subjectEntity.getData()) {
entity.setEntryMap(DownloadManager.getInstance(getActivity()).getEntryMap(entity.getName()));
}
}
adapter.notifyDataSetChanged();
}
super.onResume();
DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
}
@Override
public void onPause() {
super.onPause();
DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
adapter = new Game2FragmentAdapter(Game2Fragment.this, true);
fm_game_rv_list.setAdapter(adapter);
}
};
@Override
public void onRefresh() {
handler.postDelayed(runnable, 1000);
}
}

View File

@ -1,572 +0,0 @@
package com.gh.gamecenter.game;
import android.content.Context;
import android.content.Intent;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.DownloadItemUtils;
import com.gh.common.util.GameUtils;
import com.gh.common.util.GameViewUtils;
import com.gh.common.util.ImageUtils;
import com.gh.common.util.NewsUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.NewsDetailActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.SubjectActivity;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.SubjectEntity;
import com.gh.gamecenter.listener.OnCallBackListener;
import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/6/28.
* 游戏-推荐-数据适配器
*/
public class Game2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Game2Fragment fragment;
private Context context;
private OnCallBackListener listener;
private List<SubjectEntity> subjectList;
private ArrayMap<String, ArrayList<Integer>> locationMap;
private int cardMargin;
public Game2FragmentAdapter(Game2Fragment fragment, boolean isLoad) {
this.fragment = fragment;
this.context = fragment.getActivity();
this.listener = fragment;
subjectList = new ArrayList<>();
locationMap = new ArrayMap<>();
cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin);
if (isLoad) {
initSubjectList();
}
}
public ArrayMap<String, ArrayList<Integer>> getLocationMap() {
return locationMap;
}
public void initSubjectList() {
RetrofitManager.getApi().getTuijian()
.map(new Func1<List<SubjectEntity>, List<SubjectEntity>>() {
@Override
public List<SubjectEntity> call(List<SubjectEntity> list) {
GameManager manager = new GameManager(context);
SubjectEntity subjectEntity;
GameEntity gameEntity;
for (int j = 0; j < list.size(); j++) {
subjectEntity = list.get(j);
if (subjectEntity.getData().size() == 1
&& !TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())){
list.remove(j);
j--;
continue;
}
for (int i = 0; i < subjectEntity.getData().size(); i++) {
gameEntity = subjectEntity.getData().get(i);
if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
gameEntity.setEntryMap(DownloadManager.getInstance(context).getEntryMap(gameEntity.getName()));
manager.addOrUpdate(gameEntity.getApk(), gameEntity.getId(), gameEntity.getName());
} else if (TextUtils.isEmpty(gameEntity.getId())) {
if (TextUtils.isEmpty(gameEntity.getType())
|| TextUtils.isEmpty(gameEntity.getLink())
|| TextUtils.isEmpty(gameEntity.getName())
|| TextUtils.isEmpty(gameEntity.getImage())) {
subjectEntity.getData().remove(i);
i--;
}
}
}
}
return list;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<List<SubjectEntity>>() {
@Override
public void onResponse(List<SubjectEntity> response) {
if (response.size() != 0) {
if (!fragment.isHidden() && !fragment.isEverpause()) {
subjectList = response;
notifyItemRangeInserted(0, getItemCount());
} else {
subjectList = response;
notifyDataSetChanged();
}
initLocationMap();
}
if (listener != null) {
listener.loadDone();
}
}
@Override
public void onFailure(HttpException e) {
if (listener != null) {
listener.loadError();
}
}
});
}
private void initLocationMap() {
locationMap.clear();
if (!subjectList.isEmpty()) {
int count = getItemCount() - 1;
int offset;
ArrayList<Integer> list;
GameEntity gameEntity;
for (int position = 0; position < count; position++) {
offset = 0;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
gameEntity = subjectList.get(i).getData().get(position - offset - 1);
if (gameEntity.getApk() != null && !gameEntity.getApk().isEmpty()) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
list = locationMap.get(apkEntity.getPackageName());
if (list == null) {
list = new ArrayList<>();
locationMap.put(apkEntity.getPackageName(), list);
}
list.add(position);
}
}
break;
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
}
}
public GameEntity getGameEntityByLocation(int position) {
int offset = 0;
for (int i = 0; i < subjectList.size(); i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
return subjectList.get(i).getData().get(position - offset - 1);
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
return null;
}
@Override
public int getItemCount() {
int subjectSize = 0;
if (!subjectList.isEmpty()) {
for (int i = 0; i < subjectList.size(); i++) {
SubjectEntity subjectEntity = subjectList.get(i);
subjectSize += subjectEntity.getData().size() + 1;
}
subjectSize += 1;
}
return subjectSize;
}
@Override
public int getItemViewType(int position) {
if (!subjectList.isEmpty()) {
int offset = 0;
GameEntity gameEntity;
for (int i = 0; i < subjectList.size(); i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset - 1;
if (index < 0) {
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())) {
return ItemViewType.GAME_IMAGE;
} else if (position == offset) {
return ItemViewType.COLUMN_HEADER;
}
if (position == offset + 1 && !TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) {
return ItemViewType.COLUMN_HEADER;
}
if (gameEntity.getTest() != null) {
return ItemViewType.GAME_TEST;
}
return ItemViewType.GAME_NORMAL;
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
return ItemViewType.LOADING;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ItemViewType.COLUMN_HEADER) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.game_head_item, parent, false);
return new GameHeadViewHolder(view);
} else if (viewType == ItemViewType.GAME_IMAGE) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.game_image_item, parent, false);
return new GameImageViewHolder(view);
} else if (viewType == ItemViewType.GAME_TEST) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.game_test_item, parent, false);
return new GameTestViewHolder(view);
} else if (viewType == ItemViewType.GAME_NORMAL) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.game_normal_item, parent, false);
return new GameNormalViewHolder(view);
} else if (viewType == ItemViewType.LOADING) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.refresh_footerview, parent, false);
return new FooterViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof GameHeadViewHolder) {
initGameHeadViewHolder((GameHeadViewHolder) holder, position);
} else if (holder instanceof GameNormalViewHolder) {
initGameNormalViewHolder((GameNormalViewHolder) holder, position);
} else if (holder instanceof GameTestViewHolder) {
initGameTestViewHolder((GameTestViewHolder) holder, position);
} else if (holder instanceof GameImageViewHolder) {
initGameImageViewHolder((GameImageViewHolder) holder, position);
} else if (holder instanceof FooterViewHolder) {
initFooterViewHolder((FooterViewHolder) holder);
}
}
private void initFooterViewHolder(FooterViewHolder holder) {
holder.lineLeft.setVisibility(View.VISIBLE);
holder.lineRight.setVisibility(View.VISIBLE);
holder.loading.setVisibility(View.GONE);
holder.hint.setText("到底了哦~");
holder.itemView.setClickable(false);
}
private void initGameHeadViewHolder(GameHeadViewHolder holder, int position) {
int offset = 0;
GameEntity gameEntity;
for (int i = 0; i < subjectList.size(); i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset;
if (index < 0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && TextUtils.isEmpty(gameEntity.getImage())
|| position == offset + 1 && !TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())) {
if (TextUtils.isEmpty(subjectList.get(i).getData().get(0).getImage())
&& i == 0) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmTop(0);
}
holder.thumb.setVisibility(View.GONE);
holder.title.setText(subjectList.get(i).getName());
if (subjectList.get(i).getData().size()>= Integer.parseInt(subjectList.get(i).getMore())){
holder.link.setVisibility(View.GONE);
}else {
holder.link.setVisibility(View.VISIBLE);
}
final int ii = i;
holder.link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SubjectEntity subjectEntity = subjectList.get(ii);
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", subjectEntity.getId());
intent.putExtra("name", subjectEntity.getName());
intent.putExtra("order",subjectEntity.isOrder());
intent.putExtra("entrance", "(游戏-推荐:" + subjectEntity.getName() + "-全部)");
context.startActivity(intent);
}
});
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initGameNormalViewHolder(GameNormalViewHolder holder, int position) {
int offset = 0;
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position > offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset - 1;
if (index<0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (TextUtils.isEmpty(gameEntity.getImage()) && gameEntity.getTest() == null) {
int order = position - offset - 1;
if (subjectList.get(i).getData().get(0).getImage() != null) {
order--;
}
initGameNormal(holder, gameEntity, order, subjectList.get(i), i + 1 == size);
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initGameNormal(GameNormalViewHolder holder, GameEntity entity,
final int i, final SubjectEntity subjectEntity, boolean isBottom) {
// 最后一个
((CardLinearLayout) holder.itemView).setBottom(isBottom);
if (TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())) {
if (i + 1 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
} else {
if (i + 2 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
}
if (subjectEntity.isOrder()) {
holder.home1_game_order.setVisibility(View.VISIBLE);
holder.home1_game_order.setText(String.valueOf(i + 1));
} else {
holder.home1_game_order.setVisibility(View.GONE);
}
holder.gameThumb.setImageURI(entity.getIcon());
holder.gameNameAndSize.setText(entity.getName());
if (entity.getApk() == null || entity.getApk().isEmpty()) {
holder.gameDes.setText(entity.getBrief());
} else {
holder.gameDes.setText(String.format("%s %s", entity.getApk().get(0).getSize(), entity.getBrief()));
}
GameViewUtils.setLabelList(context, holder.labelList, entity.getTag());
final GameEntity gameEntity = entity;
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-推荐-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-推荐", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-推荐:" + subjectEntity.getName() + "-列表)");
}
});
DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, entity, i,
Game2FragmentAdapter.this, "(游戏-推荐:" + subjectEntity.getName() + "-列表)",
"游戏-推荐-" + subjectEntity.getName() + ":" + entity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
holder.download_percentage, holder.downloadBtn, entity);
}
private void initGameTestViewHolder(GameTestViewHolder holder, int position) {
int offset = 0;
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset - 1;
if (index < 0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (gameEntity.getTest() != null) {
int order = position - offset - 1;
if (subjectList.get(i).getData().get(0).getImage() != null) {
order--;
}
initGameTest(holder, gameEntity, order, subjectList.get(i), i + 1 == size);
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
private void initGameTest(GameTestViewHolder holder, final GameEntity gameEntity,
final int i, final SubjectEntity subjectEntity, boolean isBottom) {
// 最后一个
((CardLinearLayout) holder.itemView).setBottom(isBottom);
if (TextUtils.isEmpty(subjectEntity.getData().get(0).getImage())) {
if (i + 1 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
} else {
if (i + 2 == subjectEntity.getData().size()) {
((CardLinearLayout) holder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmBottom(0);
}
}
if (subjectEntity.isOrder()) {
holder.home2_game_order.setVisibility(View.VISIBLE);
holder.home2_game_order.setText(String.valueOf(i + 1));
} else {
holder.home2_game_order.setVisibility(View.GONE);
}
holder.gameThumb.setImageURI(gameEntity.getIcon());
holder.gameNameAndSize.setText(gameEntity.getName());
if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
holder.gameDes.setText(gameEntity.getBrief());
} else {
holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
}
holder.gameTestType.setText(gameEntity.getTest().getType());
if (gameEntity.getTest().getStart() == 0) {
holder.gameTestTime.setVisibility(View.GONE);
} else {
holder.gameTestTime.setText(GameViewUtils.getGameTestDate(gameEntity.getTest().getStart()));
}
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-推荐-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-推荐", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-推荐:" + subjectEntity.getName() + "-列表)");
}
});
if (gameEntity.getTest().getEnd() != 0) {
long endTime = Long.valueOf(gameEntity.getTest().getEnd() + "000");
long todayTime = new Date().getTime();
if (todayTime > endTime) {
// 测试时间已过
gameEntity.setApk(null);
}
}
DownloadItemUtils.setOnClickListener(context,
holder.downloadBtn, gameEntity, i,
Game2FragmentAdapter.this, "(游戏-推荐:" + subjectEntity.getName() + "-列表)",
"游戏-推荐-" + subjectEntity.getName() + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
holder.download_percentage, holder.downloadBtn, gameEntity);
}
private void initGameImageViewHolder(GameImageViewHolder holder, int position) {
int offset = 0;
GameEntity gameEntity;
for (int i = 0, size = subjectList.size(); i < size; i++) {
if (position >= offset && position <= subjectList.get(i).getData().size() + offset) {
int index = position - offset - 1;
if (index < 0){
index = 0;
}
gameEntity = subjectList.get(i).getData().get(index);
if (position == offset && !TextUtils.isEmpty(gameEntity.getImage())) {
if (i == 0) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmTop(0);
}
final GameEntity entity = gameEntity;
final String name = subjectList.get(i).getName();
ImageUtils.getInstance().display(holder.image, entity.getImage(),
context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 16));
holder.image.setImageURI(entity.getImage());
holder.image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", entity.getName());
kv.put("位置", "大图");
DataUtils.onEvent(context, "点击", "游戏-推荐-" + name, kv);
DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-推荐");
if ("game".equals(entity.getType())) {
GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-推荐:" + name + "-大图)");
} else if ("news".equals(entity.getType())) {
// 统计阅读量
NewsUtils.statNewsViews(entity.getLink());
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("newsId", entity.getLink());
intent.putExtra("entrance", "(游戏-推荐:" + name + "-大图)");
context.startActivity(intent);
} else if ("column".equals(entity.getType())) {
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", entity.getLink());
intent.putExtra("name", entity.getName());
intent.putExtra("entrance", "(游戏-推荐:" + name + "-大图)");
context.startActivity(intent);
}
}
});
break;
}
}
offset = subjectList.get(i).getData().size() + offset + 1;
}
}
public List<SubjectEntity> getSubectList() {
return subjectList;
}
}

View File

@ -1,242 +0,0 @@
package com.gh.gamecenter.game;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.BaseFragment;
import com.gh.common.util.DownloadItemUtils;
import com.gh.download.DataWatcher;
import com.gh.download.DownloadEntity;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.eventbus.EBDownloadStatus;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBPackage;
import com.gh.gamecenter.eventbus.EBReuse;
import com.gh.gamecenter.eventbus.EBUISwitch;
import java.util.ArrayList;
import butterknife.BindView;
/**
*
* @author 温冠超
* @email 294299195@qq.com
* @date 2015-8-8
* @update 2015-8-11
* @des 主页插件fragment
*/
public class Game3Fragment extends BaseFragment implements OnRefreshListener {
@BindView(R.id.fm_game_swipe_refresh) SwipeRefreshLayout fm_game_swipe_refresh;
@BindView(R.id.fm_game_rv_list) RecyclerView fm_game_rv_list;
private Game3FragmentAdapter adapter;
private LinearLayoutManager layoutManager;
@BindView(R.id.reuse_no_connection) LinearLayout reuse_no_connection;
@BindView(R.id.fm_game_pb_loading) ProgressBarCircularIndeterminate fm_game_pb_loading;
// 黄壮华 添加观察者 修改2015/8/15
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {
if (!fm_game_swipe_refresh.isRefreshing()) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameList().get(location);
if (gameEntity != null) {
DownloadItemUtils.processDate(getActivity(), gameEntity,
downloadEntity, adapter, location);
}
}
}
}
}
};
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init(R.layout.fragment_game);
reuse_no_connection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.VISIBLE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
});
fm_game_swipe_refresh.setColorSchemeResources(R.color.theme);
fm_game_swipe_refresh.setOnRefreshListener(this);
fm_game_rv_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
fm_game_rv_list.setLayoutManager(layoutManager);
// 黄壮华 传递引用 修改2015/8/15
adapter = new Game3FragmentAdapter(Game3Fragment.this, false);
fm_game_rv_list.setAdapter(adapter);
fm_game_rv_list.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& layoutManager.findLastVisibleItemPosition() == adapter
.getGameList().size()) {
if (!adapter.isRemove() && !adapter.isLoading()) {
adapter.addList(adapter.getGameList().size());
}
}
}
});
}
@Override
public void loadDone() {
if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) {
fm_game_swipe_refresh.setRefreshing(false);
}
if (fm_game_pb_loading != null && fm_game_pb_loading.getVisibility() == View.VISIBLE) {
fm_game_pb_loading.setVisibility(View.GONE);
}
}
@Override
public void loadError() {
if (fm_game_swipe_refresh != null && fm_game_swipe_refresh.isRefreshing()) {
fm_game_swipe_refresh.setRefreshing(false);
}
if (fm_game_pb_loading != null && fm_game_pb_loading.getVisibility() == View.VISIBLE) {
fm_game_pb_loading.setVisibility(View.GONE);
}
fm_game_rv_list.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.VISIBLE);
}
//下载被删除事件
public void onEventMainThread(EBDownloadStatus status) {
if ("delete".equals(status.getStatus())) {
DownloadManager.getInstance(getActivity()).removePlatform(status.getName(), status.getPlatform());
ArrayList<Integer> locationList = adapter.getLocationMap().get(status.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameList().get(location);
if (gameEntity != null && gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(status.getPlatform());
}
adapter.notifyItemChanged(location);
}
}
}
}
// 打开下载按钮事件
public void onEventMainThread(EBReuse reuse) {
if ("Refresh".equals(reuse.getType()) && adapter != null) {
adapter.notifyItemRangeChanged(0, adapter.getItemCount());
}
}
//安装、卸载事件
public void onEventMainThread(EBPackage busFour) {
ArrayList<Integer> locationList = adapter.getLocationMap().get(busFour.getPackageName());
if (locationList != null) {
GameEntity gameEntity;
for (int location : locationList) {
gameEntity = adapter.getGameList().get(location);
if (gameEntity != null) {
if ("安装".equals(busFour.getType())) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
if (apkEntity.getPackageName().equals(busFour.getPackageName())) {
if (gameEntity.getEntryMap() != null) {
gameEntity.getEntryMap().remove(apkEntity.getPlatform());
}
adapter.notifyItemChanged(location);
break;
}
}
} else if ("卸载".equals(busFour.getType())) {
adapter.notifyItemChanged(location);
}
}
}
}
}
//连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (reuse_no_connection.getVisibility() == View.VISIBLE) {
fm_game_swipe_refresh.setRefreshing(true);
fm_game_rv_list.setVisibility(View.VISIBLE);
fm_game_pb_loading.setVisibility(View.GONE);
reuse_no_connection.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
} else if (adapter.isNetworkError()) {
adapter.setNetworkError(false);
adapter.notifyItemChanged(adapter.getItemCount() - 1);
adapter.addList(adapter.getGameList().size());
}
}
}
public void onEventMainThread(EBUISwitch busNine) {
if ("GameFragment".equals(busNine.getFrom())) {
if (busNine.getPosition() == 2) {
if (fm_game_pb_loading.getVisibility() == View.VISIBLE) {
adapter.addList(0);
}
}
}
}
@Override
public void onResume() {
if (isEverpause) {
for (GameEntity entity : adapter.getGameList()) {
entity.setEntryMap(DownloadManager.getInstance(getActivity()).getEntryMap(entity.getName()));
}
adapter.notifyDataSetChanged();
}
super.onResume();
DownloadManager.getInstance(getActivity()).addObserver(dataWatcher);
}
@Override
public void onPause() {
super.onPause();
DownloadManager.getInstance(getActivity()).removeObserver(dataWatcher);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
adapter = new Game3FragmentAdapter(Game3Fragment.this, true);
fm_game_rv_list.setAdapter(adapter);
}
};
@Override
public void onRefresh() {
handler.postDelayed(runnable, 1000);
}
}

View File

@ -1,329 +0,0 @@
package com.gh.gamecenter.game;
import android.content.Context;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DownloadItemUtils;
import com.gh.common.util.GameUtils;
import com.gh.common.util.GameViewUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.listener.OnCallBackListener;
import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
*
* @author 温冠超
* @email 294299195@qq.com
* @date 2015-8-8
* @update 2015-8-11
* @des 首页插件fragment适配器
*/
public class Game3FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Game3Fragment fragment;
private Context context;
private OnCallBackListener listener;
private boolean isRemove;
private boolean isLoading;
private boolean isNetworkError;
private List<GameEntity> gameList;
private ArrayMap<String, ArrayList<Integer>> locationMap;
private int cardMargin;
// 黄壮华 获取引用 修改2015/8/15
public Game3FragmentAdapter(Game3Fragment fment, boolean isLoad) {
this.fragment = fment;
this.context = fment.getActivity();
this.listener = fment;
locationMap = new ArrayMap<>();
isRemove = false;
isLoading = false;
isNetworkError = false;
gameList = new ArrayList<>();
cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin);
if (isLoad) {
addList(0);
}
}
public ArrayMap<String, ArrayList<Integer>> getLocationMap() {
return locationMap;
}
public void addList(final int offset) {
if (isLoading) {
return;
}
isLoading = true;
RetrofitManager.getApi().getDanjiyouxi(20, offset)
.map(new Func1<List<GameEntity>, List<GameEntity>>() {
@Override
public List<GameEntity> call(List<GameEntity> list) {
return removeDuplicateData(gameList, list);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<List<GameEntity>>() {
@Override
public void onResponse(List<GameEntity> response) {
if (response.size() != 0) {
GameManager manager = new GameManager(context);
for (GameEntity entity : response) {
// 黄壮华 初始化游戏状态 修改2015/8/15
entity.setEntryMap(DownloadManager.getInstance(context).getEntryMap(entity.getName()));
manager.addOrUpdate(entity.getApk(), entity.getId(), entity.getName());
}
if (!fragment.isHidden() && !fragment.isEverpause()) {
gameList.addAll(response);
notifyItemRangeInserted(gameList.size() - response.size(), response.size());
} else {
gameList.addAll(response);
notifyDataSetChanged();
}
} else {
isRemove = true;
notifyItemChanged(getItemCount() - 1);
}
if (listener != null) {
listener.loadDone();
}
// 黄壮华 获取游戏位置信息 修改2015/8/15
GameEntity gameEntity;
ArrayList<Integer> list;
for (int i = 0, size = gameList.size(); i < size; i++) {
gameEntity = gameList.get(i);
if (gameEntity.getApk() != null && gameEntity.getApk().size() != 0) {
for (ApkEntity apkEntity : gameEntity.getApk()) {
list = locationMap.get(apkEntity.getPackageName());
if (list == null) {
list = new ArrayList<>();
locationMap.put(apkEntity.getPackageName(), list);
}
list.add(i);
}
}
}
isLoading = false;
}
@Override
public void onFailure(HttpException e) {
isLoading = false;
if (offset == 0) {
listener.loadError();
} else {
Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
isNetworkError = true;
notifyItemChanged(getItemCount() - 1);
}
}
});
}
private List<GameEntity> removeDuplicateData(List<GameEntity> sourceList, List<GameEntity> rawList) {
if (sourceList == null || sourceList.isEmpty()
|| rawList == null || rawList.isEmpty()) {
return rawList;
}
String id;
for (int i = 0; i < rawList.size(); i++) {
id = rawList.get(i).getId();
for (GameEntity gameEntity : sourceList) {
if (id.equals(gameEntity.getId())) {
rawList.remove(i);
i--;
break;
}
}
}
return rawList;
}
@Override
public int getItemCount() {
if (gameList.size() == 0) {
return 0;
}
return gameList.size() + 1;
}
@Override
public int getItemViewType(int position) {
if (position == gameList.size()) {
return ItemViewType.LOADING;
} else {
return ItemViewType.GAME_NORMAL;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
if (i == ItemViewType.LOADING) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.refresh_footerview, viewGroup, false);
return new FooterViewHolder(view);
} else if (i == ItemViewType.GAME_NORMAL) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(
R.layout.game_normal_item, viewGroup, false);
return new GameNormalViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
if (viewHolder instanceof GameNormalViewHolder) {
initGameNormalViewHolder((GameNormalViewHolder) viewHolder, gameList.get(position), position);
} else if (viewHolder instanceof FooterViewHolder) {
initFooterViewHolder((FooterViewHolder) viewHolder);
}
}
private void initGameNormalViewHolder(final GameNormalViewHolder holder, final GameEntity gameEntity, int position) {
// 第一个
if (position == 0) {
((CardLinearLayout) holder.itemView).setmTop(cardMargin);
} else {
((CardLinearLayout) holder.itemView).setmTop(0);
}
// 最后一个
if (position == gameList.size() - 1) {
((CardLinearLayout) holder.itemView).setBottom(true);
} else {
((CardLinearLayout) holder.itemView).setBottom(false);
}
// ImageUtils.getInstance(context).display(gameEntity.getIcon(), holder.gameThumb);
holder.gameThumb.setImageURI(gameEntity.getIcon());
holder.gameNameAndSize.setText(gameEntity.getName());
if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) {
holder.gameDes.setText(gameEntity.getBrief());
} else {
holder.gameDes.setText(String.format("%s %s", gameEntity.getApk().get(0).getSize(), gameEntity.getBrief()));
}
GameViewUtils.setLabelList(context, holder.labelList, gameEntity.getTag());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(holder.getPosition() + 1));
DataUtils.onEvent(context, "点击", "游戏-单机", kv);
DataCollectionUtils.uploadClick(context, "列表", "游戏-单机", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-单机)");
}
});
DownloadItemUtils.setOnClickListener(context, holder.downloadBtn,
gameEntity, position, this, "(游戏-单机)",
"游戏-单机:" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info,
holder.download_speed, holder.download_percentage,
holder.downloadBtn, gameEntity, false);
}
private void initFooterViewHolder(FooterViewHolder holder) {
if (isNetworkError) {
holder.lineLeft.setVisibility(View.GONE);
holder.lineRight.setVisibility(View.GONE);
holder.loading.setVisibility(View.GONE);
holder.hint.setText("加载失败,点击重试");
holder.itemView.setClickable(true);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
isNetworkError = false;
notifyItemChanged(getItemCount() - 1);
addList(gameList.size());
}
});
} else if (isRemove) {
holder.lineLeft.setVisibility(View.VISIBLE);
holder.lineRight.setVisibility(View.VISIBLE);
holder.loading.setVisibility(View.GONE);
holder.hint.setText("到底了哦~");
holder.itemView.setClickable(false);
} else {
holder.lineLeft.setVisibility(View.GONE);
holder.lineRight.setVisibility(View.GONE);
holder.loading.setVisibility(View.VISIBLE);
holder.hint.setText("加载中...");
holder.itemView.setClickable(false);
}
}
public List<GameEntity> getGameList() {
return gameList;
}
public boolean isRemove() {
return isRemove;
}
public void setRemove(boolean isRemove) {
this.isRemove = isRemove;
}
public boolean isLoading() {
return isLoading;
}
public boolean isNetworkError() {
return isNetworkError;
}
public void setNetworkError(boolean isNetworkError) {
this.isNetworkError = isNetworkError;
}
}

View File

@ -64,7 +64,6 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR
}
}
};
private LinearLayoutManager layoutManager;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
@ -93,8 +92,7 @@ public class GameFragment extends HomeFragment implements SwipeRefreshLayout.OnR
fm_game_swipe_refresh.setOnRefreshListener(this);
fm_game_rv_list.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
fm_game_rv_list.setLayoutManager(layoutManager);
fm_game_rv_list.setLayoutManager(new LinearLayoutManager(getActivity()));
adapter = new GameFragmentAdapter(GameFragment.this, fm_game_swipe_refresh);
fm_game_rv_list.setAdapter(adapter);

View File

@ -52,7 +52,6 @@ import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameTestViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameViewPagerViewHolder;
import com.gh.gamecenter.db.LibaoDao;
import com.gh.gamecenter.db.info.LibaoInfo;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.entity.GameUpdateEntity;
@ -79,8 +78,9 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/12/6.
*
*/
public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private GameFragment fragment;
private Context context;
@ -92,7 +92,6 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
private List<GameEntity> pluginList;
private List<SubjectEntity> subjectList;
private List<SubjectDigestEntity> subjectDigestList;
private List<LibaoInfo> libaoInfos;
// 包名对应游戏位置
private ArrayMap<String, ArrayList<Integer>> locationMap;
@ -115,15 +114,13 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
private int topHeight;
private int topHeightOld;
public GameFragmentAdapter(GameFragment fragment,
SwipeRefreshLayout refreshLayout) {
GameFragmentAdapter(GameFragment fragment, SwipeRefreshLayout refreshLayout) {
this.fragment = fragment;
this.context = fragment.getActivity();
this.listener = fragment;
libaoDao = new LibaoDao(context);
libaoInfos = libaoDao.getAll();
game_swipe_refresh = refreshLayout;
@ -160,7 +157,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
return locationMap;
}
public GameEntity getGameEntityByLocation(int location) {
GameEntity getGameEntityByLocation(int location) {
if (!pluginList.isEmpty() && location > 1 && location <= 1 + pluginList.size()) {
return pluginList.get(location - 2);
@ -180,7 +177,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
return null;
}
public void initSubjectDigest(final boolean isLoadMore) {
void initSubjectDigest(final boolean isLoadMore) {
RetrofitManager.getApi()
.getSubjectDigest()
.subscribeOn(Schedulers.io())
@ -211,7 +208,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
});
}
public void initSlide(final boolean isFirst) {
private void initSlide(final boolean isFirst) {
RetrofitManager.getApi().getSlide()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -320,7 +317,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
});
}
public void initPlugin() {
void initPlugin() {
if (isInitPlugin) {
return;
}
@ -449,7 +446,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
}
}
public void initItemCount() {
void initItemCount() {
int pluginSize = 0;
if (!pluginList.isEmpty()) {
pluginSize += 1 + pluginList.size();
@ -726,14 +723,17 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
intent.putExtra("id", subjectDigestList.get(finalI).getColumnId());
intent.putExtra("name", subjectDigestList.get(finalI).getColumnName());
intent.putExtra("order", subjectDigestList.get(finalI).getOrder());
intent.putExtra("entrance", "(游戏-专题:" + subjectDigestList.get(finalI).getName() + ")");
context.startActivity(intent);
} else if (finalI == 3) {
subjectNewIcon.setVisibility(View.GONE);
sp.edit().putBoolean("showGiftNewIcon", false).apply();
Intent intent = new Intent(context, LibaoActivity.class);
intent.putExtra("entrance", "(游戏-专题:礼包)");
context.startActivity(intent);
} else if (finalI == 4){
Intent intent = new Intent(context, StrategyActivity.class);
intent.putExtra("entrance", "(游戏-专题:攻略)");
context.startActivity(intent);
} else {
Utils.toast(context, "数据异常");
@ -757,7 +757,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
if (subjectList.get(i).getData().get(0).getImage() != null) {
order--;
}
initGameTest(holder, gameEntity, order, subjectList.get(i), i + 1 == size, position);
initGameTest(holder, gameEntity, order, subjectList.get(i), i + 1 == size);
break;
}
}
@ -766,7 +766,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
}
private void initGameTest(GameTestViewHolder holder, final GameEntity gameEntity,
final int i, final SubjectEntity subjectEntity, boolean isBottom, int position) {
final int i, final SubjectEntity subjectEntity, boolean isBottom) {
// 最后一个
((CardLinearLayout) holder.itemView).setBottom(isBottom);
@ -821,12 +821,11 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
DataUtils.onEvent(context, "点击", "游戏-专题-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName());
DataCollectionUtils.uploadClick(context, subjectEntity.getName() + "-列表", "游戏-专题", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-插件:" + subjectEntity.getName() + "-列表)");
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-专题:" + subjectEntity.getName() + "-列表[" + (i + 1) + "])");
}
});
@ -841,8 +840,8 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
DownloadItemUtils.setOnClickListener(context,
holder.downloadBtn, gameEntity, i,
GameFragmentAdapter.this, "(游戏-插件:" + subjectEntity.getName() + "-列表)",
"游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
GameFragmentAdapter.this, "(游戏-专题:" + subjectEntity.getName() + "-列表[" + (i + 1) + "])",
"游戏-专题-" + subjectEntity.getName() + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
@ -942,29 +941,28 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
Map<String, Object> kv = new HashMap<>();
kv.put("名字", gameEntity.getName());
kv.put("位置", String.valueOf(i + 1));
DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv);
DataUtils.onEvent(context, "点击", "游戏-专题-" + subjectEntity.getName(), kv);
DataCollectionUtils.uploadClick(context,
subjectEntity.getName() + "-列表", "游戏-插件", gameEntity.getName());
DataCollectionUtils.uploadClick(context, subjectEntity.getName() + "-列表", "游戏-专题", gameEntity.getName());
if (gameEntity.isPluggable()) {
GameUtils.startGameDetailActivity(context, gameEntity.getId(), "(游戏-插件:" + subjectEntity.getName() + "-列表)");
GameUtils.startGameDetailActivity(context, gameEntity.getId(), "(游戏-专题:插件化-列表[" + (i + 1) + "])");
} else {
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-插件:" + subjectEntity.getName() + "-列表)");
GameUtils.startGameDetailActivity(context, gameEntity, "(游戏-专题:" + subjectEntity.getName() + "-列表[" + (i + 1) + "])");
}
}
});
DownloadItemUtils.setOnClickListener(context, holder.downloadBtn, gameEntity, i,
GameFragmentAdapter.this, "(游戏-插件:" + subjectEntity.getName() + "-列表)",
"游戏-插件-" + subjectEntity.getName() + ":" + gameEntity.getName());
GameFragmentAdapter.this, "(游戏-专题:" + subjectEntity.getName() + "-列表[" + (i + 1) + "])",
"游戏-专题-" + subjectEntity.getName() + ":" + gameEntity.getName());
DownloadItemUtils.updateItem(context, holder.gameDes,
holder.game_progressbar, holder.game_ll_info, holder.download_speed,
holder.download_percentage, holder.downloadBtn, gameEntity, !gameEntity.isPluggable());
}
public void initGameImageViewHolder(GameImageViewHolder holder, int position) {
private void initGameImageViewHolder(GameImageViewHolder holder, int position) {
int offset = 1;
if (!pluginList.isEmpty()) {
offset += 1 + pluginList.size();
@ -996,25 +994,25 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
Map<String, Object> kv = new HashMap<>();
kv.put("名字", entity.getName());
kv.put("位置", "大图");
DataUtils.onEvent(context, "点击", "游戏-插件-" + name, kv);
DataUtils.onEvent(context, "点击", "游戏-专题-" + name, kv);
DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-插件");
DataCollectionUtils.uploadClick(context, name + "-大图", "游戏-专题");
if ("game".equals(entity.getType())) {
GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-插件:" + name + "-大图)");
GameUtils.startGameDetailActivity(context, entity.getLink(), "(游戏-专题:" + name + "-大图)");
} else if ("news".equals(entity.getType())) {
// 统计阅读量
NewsUtils.statNewsViews(entity.getLink());
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("newsId", entity.getLink());
intent.putExtra("entrance", "(游戏-插件:" + name + "-大图)");
intent.putExtra("entrance", "(游戏-专题:" + name + "-大图)");
context.startActivity(intent);
} else if ("column".equals(entity.getType())) {
Intent intent = new Intent(context, SubjectActivity.class);
intent.putExtra("id", entity.getLink());
intent.putExtra("name", entity.getName());
intent.putExtra("entrance", "(游戏-插件:" + name + "-大图)");
intent.putExtra("entrance", "(游戏-专题:" + name + "-大图)");
context.startActivity(intent);
}
}
@ -1026,7 +1024,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
}
}
public void initGameHeadViewHolder(final GameHeadViewHolder holder, int position) {
private void initGameHeadViewHolder(final GameHeadViewHolder holder, int position) {
if (!pluginList.isEmpty() && position == 1) {
// ((CardLinearLayout) holder.itemView).setmTop(cardMargin);
holder.title.setTextColor(context.getResources().getColor(R.color.theme));
@ -1042,7 +1040,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
@Override
public void onClick(View v) {
Intent intent = new Intent(context, PluginActivity.class);
intent.putExtra("entrance", "(游戏-插件:插件化-全部)");
intent.putExtra("entrance", "(游戏-专题:插件化-全部)");
context.startActivity(intent);
}
});
@ -1099,7 +1097,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
intent.putExtra("id", subjectEntity.getId());
intent.putExtra("name", subjectEntity.getName());
intent.putExtra("order",subjectEntity.isOrder());
intent.putExtra("entrance", "(游戏-插件:" + subjectEntity.getName() + "-全部)");
intent.putExtra("entrance", "(游戏-专题:" + subjectEntity.getName() + "-全部)");
context.startActivity(intent);
} else {
holder.progressBar.setVisibility(View.VISIBLE);
@ -1209,7 +1207,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
}
//轮播图和入口刷新
public void stretchTop(int offset, boolean isInit) {
void stretchTop(int offset, boolean isInit) {
if (isInit) {
while (true) {
if (topHeight > topHeightOld) {
@ -1230,27 +1228,27 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
}
public float getDragPercent() {
float getDragPercent() {
int offset = topHeight - topHeightOld;
float distance = (float) (offset * 3) / (float) topHeightOld;
return (float) (1.0 - distance);
}
public void startAutoScroll() {
void startAutoScroll() {
isAutoScroll = true;
notifyItemChanged(0);
}
public void stopAutoScroll() {
void stopAutoScroll() {
isAutoScroll = false;
notifyItemChanged(0);
}
public List<GameEntity> getPluginList() {
List<GameEntity> getPluginList() {
return pluginList;
}
public List<SubjectEntity> getSubjectList() {
List<SubjectEntity> getSubjectList() {
return subjectList;
}
@ -1262,7 +1260,7 @@ public class GameFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
isNetworkError = networkError;
}
public boolean isInitPlugin() {
boolean isInitPlugin() {
return isInitPlugin;
}
}

View File

@ -1,216 +0,0 @@
package com.gh.gamecenter.game;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.gh.base.HomeFragment;
import com.gh.common.util.DisplayUtils;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.FragmentAdapter;
import com.gh.gamecenter.eventbus.EBSkip;
import com.gh.gamecenter.eventbus.EBUISwitch;
import java.util.ArrayList;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
*
* @author 温冠超
* @email 294299195@qq.com
* @date 2015-8-8 主页fragment3页面
*/
public class GameFragmentOld extends HomeFragment implements OnPageChangeListener {
private LinearLayout slidebar_ll_top;
private View slidebar_line;
private ViewPager page_vp_content;
private LinearLayout.LayoutParams lparams;
private TextView tv_chajian;
private TextView tv_tuijian;
private TextView tv_danji;
private int width;
private int currentItem;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currentItem", currentItem);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((LinearLayout) view).addView(View.inflate(getActivity(), R.layout.fragment_slidebar, null));
((LinearLayout) view).addView(View.inflate(getActivity(), R.layout.fragment_page, null));
List<Fragment> list = new ArrayList<>();
list.add(new Game1Fragment());
list.add(new Game2Fragment());
list.add(new Game3Fragment());
page_vp_content.setAdapter(new FragmentAdapter(getChildFragmentManager(), list));
page_vp_content.addOnPageChangeListener(this);
currentItem = 0;
if (savedInstanceState != null) {
currentItem = savedInstanceState.getInt("currentItem");
}
initTextView();
page_vp_content.setCurrentItem(currentItem);
DisplayMetrics outMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
width = outMetrics.widthPixels / 3;
lparams = new LinearLayout.LayoutParams(width / 2,
DisplayUtils.dip2px(getActivity(), 2));
lparams.leftMargin = (int) (width * (currentItem + 0.25f));
slidebar_line.setLayoutParams(lparams);
handler.postDelayed(new Runnable() {
@Override
public void run() {
EventBus.getDefault().post(new EBUISwitch("GameFragment", page_vp_content.getCurrentItem()));
}
}, 100);
}
private void initTextView() {
tv_chajian = new TextView(getActivity());
tv_chajian.setText("插件");
if (currentItem == 0) {
tv_chajian.setTextColor(getResources().getColor(R.color.theme));
} else {
tv_chajian.setTextColor(getResources().getColor(R.color.title));
}
tv_chajian.setGravity(Gravity.CENTER);
tv_chajian.setOnClickListener(this);
LinearLayout.LayoutParams lparams1 = new LinearLayout.LayoutParams(
0, DisplayUtils.dip2px(getActivity(), 35));
lparams1.weight = 1;
slidebar_ll_top.addView(tv_chajian, lparams1);
tv_tuijian = new TextView(getActivity());
tv_tuijian.setText("推荐");
if (currentItem == 1) {
tv_tuijian.setTextColor(getResources().getColor(R.color.theme));
} else {
tv_tuijian.setTextColor(getResources().getColor(R.color.title));
}
tv_tuijian.setGravity(Gravity.CENTER);
tv_tuijian.setOnClickListener(this);
LinearLayout.LayoutParams lparams2 = new LinearLayout.LayoutParams(
0, DisplayUtils.dip2px(getActivity(), 35));
lparams2.weight = 1;
slidebar_ll_top.addView(tv_tuijian, lparams2);
tv_danji = new TextView(getActivity());
tv_danji.setText("单机");
if (currentItem == 2) {
tv_danji.setTextColor(getResources().getColor(R.color.theme));
} else {
tv_danji.setTextColor(getResources().getColor(R.color.title));
}
tv_danji.setGravity(Gravity.CENTER);
tv_danji.setOnClickListener(this);
LinearLayout.LayoutParams lparams3 = new LinearLayout.LayoutParams(
0, DisplayUtils.dip2px(getActivity(), 35));
lparams3.weight = 1;
slidebar_ll_top.addView(tv_danji, lparams3);
}
@Override
public void onClick(View v) {
super.onClick(v);
if (v == tv_chajian) {
page_vp_content.setCurrentItem(0);
} else if (v == tv_tuijian) {
page_vp_content.setCurrentItem(1);
} else if (v == tv_danji) {
page_vp_content.setCurrentItem(2);
}
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
tv_chajian.setTextColor(getResources().getColor(R.color.theme));
tv_tuijian.setTextColor(getResources().getColor(R.color.title));
tv_danji.setTextColor(getResources().getColor(R.color.title));
} else if (position == 1) {
tv_chajian.setTextColor(getResources().getColor(R.color.title));
tv_tuijian.setTextColor(getResources().getColor(R.color.theme));
tv_danji.setTextColor(getResources().getColor(R.color.title));
} else if (position == 2) {
tv_chajian.setTextColor(getResources().getColor(R.color.title));
tv_tuijian.setTextColor(getResources().getColor(R.color.title));
tv_danji.setTextColor(getResources().getColor(R.color.theme));
}
}
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
if (positionOffset != 0) {
lparams.leftMargin = (int) (width * (position + positionOffset + 0.25f));
slidebar_line.setLayoutParams(lparams);
} else {
if (currentItem != page_vp_content.getCurrentItem()) {
currentItem = page_vp_content.getCurrentItem();
EventBus.getDefault().post(new EBUISwitch("GameFragment", currentItem));
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
public void onEventMainThread(EBUISwitch busNine) {
if ("MainActivity".equals(busNine.getFrom())) {
if (busNine.getPosition() == 0) {
EventBus.getDefault().post(new EBUISwitch("GameFragment", page_vp_content.getCurrentItem()));
}
}
}
public void onEventMainThread(EBSkip skip) {
if ("MainActivity".equals(skip.getType())) {
page_vp_content.setCurrentItem(skip.getCurrentItem());
}
}
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
List<Fragment> list = getChildFragmentManager().getFragments();
if (list != null) {
if (hidden) {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
transaction.hide(fragment);
}
} else {
for (Fragment fragment : getChildFragmentManager().getFragments()) {
transaction.show(fragment);
}
}
}
transaction.commit();
}
}

View File

@ -141,7 +141,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
});
}
public void addLibaoList(){
private void addLibaoList(){
RetrofitManager.getLibao().getLibaoByGame(gameEntity.getId(),0 , 128)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@ -388,7 +388,8 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
private void initLibaoViewHolder(GameDetaiLibaoViewHolder holder) {
holder.libaoRv.setLayoutManager(new LinearLayoutManager(context
, LinearLayoutManager.HORIZONTAL, false));
holder.libaoRv.setAdapter(new GameLibaoGalleryAdapter(context, libaoList));
holder.libaoRv.setAdapter(new GameLibaoGalleryAdapter(context, libaoList,
entrance + "+(游戏详情[" + gameEntity.getName() + "]:游戏礼包)"));
}
private void initSkinViewHolder(GameDetailSkinViewHolder holder) {
@ -475,7 +476,9 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
viewHolder.gamedetail_item_intro_gallery.setHasFixedSize(true);
viewHolder.gamedetail_item_intro_gallery.setLayoutManager(
new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
viewHolder.gamedetail_item_intro_gallery.setAdapter(new GameGalleryAdapter(context, gameDetailEntity.getGallery()));
viewHolder.gamedetail_item_intro_gallery.setAdapter(
new GameGalleryAdapter(context, gameDetailEntity.getGallery(),
entrance + "+(游戏详情[" + gameEntity.getName() + "]:游戏介绍)"));
viewHolder.gamedetail_item_intro_gallery.addItemDecoration(
new HorizontalItemDecoration(context, 1, gameDetailEntity.getGallery().size()));
}
@ -508,7 +511,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
intent.putExtra("articleTypes", gameDetailEntity.getArticleTypes());
intent.putExtra("gameName", gameEntity.getName());
intent.putExtra("gameId", gameEntity.getId());
intent.putExtra("entrance", entrance + "+(游戏详情:资讯攻略)");
intent.putExtra("entrance", entrance + "+(游戏详情[" + gameEntity.getName() + "]:资讯攻略-全部)");
context.startActivity(intent);
}
}
@ -547,7 +550,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(游戏详情:资讯攻略)");
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(游戏详情[" + gameEntity.getName() + "]:资讯攻略-列表[" + (ii + 1) + "])");
}
});
viewHolder.gamedetail_item_news_list.addView(view);
@ -633,7 +636,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
private class PluginAdapter extends RecyclerView.Adapter<PluginAdapter.ViewHolder>{
private ArrayList<TagEntity> tags;
public PluginAdapter(ArrayList<TagEntity> tags) {
PluginAdapter(ArrayList<TagEntity> tags) {
this.tags = tags;
}
@ -685,7 +688,7 @@ public class GameDetailAdapter extends RecyclerView.Adapter {
return tags.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
class ViewHolder extends RecyclerView.ViewHolder{
LinearLayout linearLayout;
SimpleDraweeView pluginIcon;

View File

@ -20,15 +20,18 @@ import java.util.Map;
* Created by LGT on 2016/9/8.
*
*/
public class GameGalleryAdapter extends RecyclerView.Adapter<GameGalleryViewHolder> {
class GameGalleryAdapter extends RecyclerView.Adapter<GameGalleryViewHolder> {
private Context context;
private ArrayList<String> gallery;
public GameGalleryAdapter(Context context, ArrayList<String> list) {
private String entrance;
GameGalleryAdapter(Context context, ArrayList<String> list, String entrance) {
this.context = context;
gallery = list;
this.gallery = list;
this.entrance = entrance;
}
@Override
@ -53,6 +56,7 @@ public class GameGalleryAdapter extends RecyclerView.Adapter<GameGalleryViewHold
Intent intent = new Intent(context, ViewImageActivity.class);
intent.putExtra("urls", gallery);
intent.putExtra("current", holder.getPosition());
intent.putExtra("entrance", entrance);
context.startActivity(intent);
}
});

View File

@ -16,14 +16,18 @@ import java.util.List;
/**
* Created by khy on 2016/12/14.
*
*/
public class GameLibaoGalleryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class GameLibaoGalleryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private List<LibaoEntity> mLibaoList;
private String entrance;
public GameLibaoGalleryAdapter(Context context, List<LibaoEntity> libaoList) {
GameLibaoGalleryAdapter(Context context, List<LibaoEntity> libaoList, String entrance) {
this.mLibaoList = libaoList;
this.mContext = context;
this.entrance = entrance;
}
@Override
@ -33,7 +37,7 @@ public class GameLibaoGalleryAdapter extends RecyclerView.Adapter<RecyclerView.V
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
GameLibaoGalleryViewHolder viewHolder = (GameLibaoGalleryViewHolder) holder;
LibaoEntity libaoEntity = mLibaoList.get(position);
viewHolder.libaoName.setText(libaoEntity.getName());
@ -44,8 +48,9 @@ public class GameLibaoGalleryAdapter extends RecyclerView.Adapter<RecyclerView.V
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppController.put("libaoEntity", mLibaoList.get(position));
AppController.put("libaoEntity", mLibaoList.get(holder.getPosition()));
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance);
mContext.startActivity(intent);
}
});

View File

@ -38,8 +38,9 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/12/12.
*
*/
public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private Libao1Fragment libao1Fragment;
@ -53,6 +54,8 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
private String mSerchKey;
private String entrance;
private int skipPosition;
private boolean mIsSearch;
@ -60,7 +63,7 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
private boolean isOver;
private boolean isNetworkError;
public Libao1FragmentAdapter(Libao1Fragment libao1Fragment, boolean isSearch, String key) {
Libao1FragmentAdapter(Libao1Fragment libao1Fragment, boolean isSearch, String key) {
this.mContext = libao1Fragment.getContext();
this.libao1Fragment = libao1Fragment;
this.mCallBackListener = libao1Fragment;
@ -68,6 +71,8 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
this.mIsSearch = isSearch;
this.mSerchKey = key;
this.entrance = libao1Fragment.getActivity().getIntent().getStringExtra("entrance");
mLibaoList = new ArrayList<>();
mLibaoDao = new LibaoDao(mContext);
@ -79,7 +84,7 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
}
}
public void addLibaoList(final boolean isSearch, int offset){
void addLibaoList(final boolean isSearch, int offset){
if (isLoading) return;
isLoading = true;
@ -300,7 +305,7 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
});
}
private void initLibaoViewHolder(final LibaoNormalViewHolder holder, final int position) {
private void initLibaoViewHolder(final LibaoNormalViewHolder holder, int position) {
final LibaoEntity libaoEntity = mLibaoList.get(position - 1);
holder.libaoName.setText(libaoEntity.getName());
if (TextUtils.isEmpty(libaoEntity.getPlatform())) {
@ -320,7 +325,7 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
holder.libaoDes.setText(content);
if (libaoEntity.getStatus() != null) {
LibaoUtils.initLibaoBtn(holder.libaoBtnStatus, libaoEntity, mLibaoDao, false, null);
LibaoUtils.initLibaoBtn(holder.libaoBtnStatus, libaoEntity, mLibaoDao, false, null, "(礼包中心-最新)");
// holder.libaoBtnStatus.setClickable(false);
String tv = holder.libaoBtnStatus.getText().toString();
if ("已结束".equals(tv) || "已领光".equals(tv)) {
@ -329,9 +334,10 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
holder.libaoBtnStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skipPosition = position;
skipPosition = holder.getPosition();
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-最新)");
libao1Fragment.startActivityForResult(intent, 0x123);
}
});
@ -341,9 +347,10 @@ public class Libao1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skipPosition = position;
skipPosition = holder.getPosition();
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-最新)");
libao1Fragment.startActivityForResult(intent, 0x123);
}
});

View File

@ -50,8 +50,9 @@ import rx.schedulers.Schedulers;
/**
* Created by khy on 2016/12/12.
*
*/
public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
private Libao2Fragment libao2Fragment;
@ -68,16 +69,20 @@ public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
private String key;
private String ids;
private String entrance;
private int skipPosition;
private LibaoDao mLibaoDao;
public Libao2FragmentAdapter(Libao2Fragment libao2Fragment) {
Libao2FragmentAdapter(Libao2Fragment libao2Fragment) {
this.mContext = libao2Fragment.getContext();
this.libao2Fragment = libao2Fragment;
this.mCallBackListener = libao2Fragment;
this.entrance = libao2Fragment.getActivity().getIntent().getStringExtra("entrance");
mLibaoList = new ArrayList<>();
gameIdList = new ArrayList<>();
@ -370,6 +375,7 @@ public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
@Override
public void onClick(View v) {
Intent intent = new Intent(mContext, ConcernActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-关注)");
mContext.startActivity(intent);
}
});
@ -396,7 +402,7 @@ public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
holder.libaoDes.setText(content);
if (libaoEntity.getStatus() != null) {
LibaoUtils.initLibaoBtn(holder.libaoBtnStatus, libaoEntity, mLibaoDao, false, null);
LibaoUtils.initLibaoBtn(holder.libaoBtnStatus, libaoEntity, mLibaoDao, false, null, "(礼包中心-关注)");
holder.libaoBtnStatus.setClickable(false);
String tv = holder.libaoBtnStatus.getText().toString();
if ("已结束".equals(tv) || "已领光".equals(tv)) {
@ -408,6 +414,7 @@ public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
skipPosition = position;
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-关注)");
libao2Fragment.startActivityForResult(intent, 0x123);
}
});
@ -420,6 +427,7 @@ public class Libao2FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
skipPosition = position;
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-关注)");
libao2Fragment.startActivityForResult(intent, 0x123);
}
});

View File

@ -32,8 +32,9 @@ import retrofit2.adapter.rxjava.HttpException;
/**
* Created by khy on 2016/12/12.
*
*/
public class Libao3FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class Libao3FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context mContext;
@ -44,16 +45,20 @@ public class Libao3FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
private LibaoDao mLibaoDao;
public Libao3FragmentAdapter(Libao3Fragment libao3Fragment) {
private String entrance;
Libao3FragmentAdapter(Libao3Fragment libao3Fragment) {
this.mContext = libao3Fragment.getContext();
this.mCallBackListener = libao3Fragment;
this.entrance = libao3Fragment.getActivity().getIntent().getStringExtra("entrance");
mLibaoList = new ArrayList<>();
initData();
}
public void initData() {
void initData() {
mLibaoList.clear();
mLibaoDao = new LibaoDao(mContext);
mLibaoInfos = mLibaoDao.getAll();
@ -148,6 +153,7 @@ public class Libao3FragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vie
public void onClick(View v) {
AppController.put("libaoEntity", libaoEntity);
Intent intent = new Intent(mContext, LibaoDetailActivity.class);
intent.putExtra("entrance", entrance + "+(礼包中心-存号箱)");
mContext.startActivity(intent);
}
});

View File

@ -593,6 +593,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
}
skipPosition = viewHolder.getPosition();
Intent intent = new Intent(context, LibaoDetailActivity.class);
intent.putExtra("entrance", "(资讯-关注)");
fragment.startActivityForResult(intent, 0x122);
}
});
@ -616,8 +617,8 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
} else {
viewHolder.imgLayout.setVisibility(View.VISIBLE);
viewHolder.imgLayout.removeAllViews();
ConcernContentUtils.addContentPic(context.getResources().getDisplayMetrics().widthPixels
- DisplayUtils.dip2px(context, 34), viewHolder.imgLayout, concernEntity.getImg(), context);
ConcernContentUtils.addContentPic(context, viewHolder.imgLayout, concernEntity.getImg(), "(资讯-关注)",
context.getResources().getDisplayMetrics().widthPixels - DisplayUtils.dip2px(context, 34));
}
int views = concernEntity.getViews();
@ -678,6 +679,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
}
bundle.putStringArrayList("shareArrImg", (ArrayList<String>) concernEntity.getImg());
intent.putExtras(bundle);
intent.putExtra("entrance", "(资讯-关注)");
context.startActivity(intent);
} else {
Intent intent = new Intent(context, ShareCardActivity.class);
@ -689,6 +691,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
bundle.putString("newsId", concernEntity.getId());
}
intent.putExtras(bundle);
intent.putExtra("entrance", "(资讯-关注)");
context.startActivity(intent);
}
}
@ -713,6 +716,7 @@ public class News1FragmentAdapter extends RecyclerView.Adapter<RecyclerView.View
intent.putExtra("url", concernEntity.getLink());
intent.putExtra("gameName", concernEntity.getGameName());
intent.putExtra("newsId", concernEntity.getId());
intent.putExtra("entrance", "(资讯-关注)");
fragment.startActivityForResult(intent, 0x125);
}else {
Intent intent = new Intent(context, NewsDetailActivity.class);

View File

@ -1,180 +0,0 @@
package com.gh.gamecenter.news;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.BaseFragment;
import com.gh.gamecenter.R;
import com.gh.gamecenter.eventbus.EBNetworkState;
import com.gh.gamecenter.eventbus.EBUISwitch;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by khy on 2016/6/29.
* 资讯-攻略界面
*/
public class News4Fragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
@BindView(R.id.news4_srl_refresh) SwipeRefreshLayout refreshLayout;
@BindView(R.id.news4_rv_list) RecyclerView recyclerView;
@BindView(R.id.news4_rl_label) RelativeLayout labelLayout;
@BindView(R.id.news4_tv_label) TextView label;
@BindView(R.id.news4_pb_loading) ProgressBarCircularIndeterminate loadingLayout;
@BindView(R.id.reuse_no_connection) LinearLayout noConnectionLayout;
private LinearLayoutManager layoutManager;
private News4FragmentAdapter adapter;
private RelativeLayout.LayoutParams rparams;
Runnable runnable = new Runnable() {
@Override
public void run() {
adapter = new News4FragmentAdapter(News4Fragment.this);
recyclerView.setAdapter(adapter);
adapter.addList(0);
}
};
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init(R.layout.fragment_news4);
refreshLayout.setColorSchemeResources(R.color.theme);
refreshLayout.setOnRefreshListener(this);
rparams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
adapter = new News4FragmentAdapter(News4Fragment.this);
recyclerView.setAdapter(adapter);
recyclerView.setOnScrollListener(new OnScrollListener());
}
// RecyclerView 滑动监听
class OnScrollListener extends RecyclerView.OnScrollListener {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int position = layoutManager.findFirstVisibleItemPosition();
if (position == 0 && layoutManager.findViewByPosition(position).getTop() == 0) {
labelLayout.setVisibility(View.GONE);
} else if (!refreshLayout.isRefreshing()) {
labelLayout.setVisibility(View.VISIBLE);
}
if (adapter.getTodayPosition() != -1
&& position >= adapter.getTodayPosition()
&& position <= adapter.getTodaySize() + adapter.getTodayPosition()) {
label.setText("今天");
label.setTextColor(0xFF00B7FA);
} else if (adapter.getBeforePosition() != -1
&& position >= adapter.getBeforePosition()) {
label.setText("昨天/以前");
label.setTextColor(0xFF3A3A3A);
}
if (position == adapter.getTodayPosition() - 1
|| position == adapter.getBeforePosition() - 1) {
int buttom = layoutManager.findViewByPosition(position).getBottom();
if (buttom <= labelLayout.getHeight()) {
rparams.topMargin = buttom - labelLayout.getHeight();
labelLayout.setLayoutParams(rparams);
} else {
rparams.topMargin = 0;
labelLayout.setLayoutParams(rparams);
}
} else {
rparams.topMargin = 0;
labelLayout.setLayoutParams(rparams);
}
}
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& layoutManager.findLastVisibleItemPosition() + 1 == adapter.getItemCount()) {
if (!adapter.isOver() && !adapter.isLoading() && !adapter.isNetworkError()) {
adapter.addList(adapter.getNewsListSize());
}
}
}
}
@OnClick(R.id.reuse_no_connection)
public void reconnection() { // 重新连接
refreshLayout.setRefreshing(true);
recyclerView.setVisibility(View.VISIBLE);
loadingLayout.setVisibility(View.VISIBLE);
noConnectionLayout.setVisibility(View.GONE);
handler.postDelayed(runnable, 1000);
}
@Override
public void loadDone() { // 数据加载成功回调
refreshLayout.setRefreshing(false);
loadingLayout.setVisibility(View.GONE);
}
@Override
public void loadDone(Object obj) { // label显示回调
if (adapter.getTodayPosition() != -1) {
label.setText("今天");
label.setTextColor(0xFF00B7FA);
} else if (adapter.getBeforePosition() != -1) {
label.setText("昨天/以前");
label.setTextColor(0xFF3A3A3A);
}
}
@Override
public void loadError() { // 数据加载失败回调
refreshLayout.setRefreshing(false);
loadingLayout.setVisibility(View.GONE);
recyclerView.setVisibility(View.GONE);
noConnectionLayout.setVisibility(View.VISIBLE);
}
// 连接上网络事件
public void onEventMainThread(EBNetworkState busNetworkState) {
if (busNetworkState.isNetworkConnected()) {
if (noConnectionLayout.getVisibility() == View.VISIBLE) {
reconnection();
} else if (adapter.isNetworkError()) {
adapter.setNetworkError(false);
adapter.notifyItemChanged(adapter.getItemCount() - 1);
adapter.addList(adapter.getNewsListSize());
}
}
}
// Fragment界面切换事件
public void onEventMainThread(EBUISwitch busNine) {
if ("NewsFragment".equals(busNine.getFrom())) {
if (busNine.getPosition() == 3) {
if (loadingLayout.getVisibility() == View.VISIBLE) {
adapter.addList(0);
}
}
}
}
@Override
public void onRefresh() { // 刷新
handler.postDelayed(runnable, 1000);
}
}

View File

@ -1,442 +0,0 @@
package com.gh.gamecenter.news;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Toast;
import com.gh.common.constant.ItemViewType;
import com.gh.common.util.DataCollectionUtils;
import com.gh.common.util.DataUtils;
import com.gh.common.util.DisplayUtils;
import com.gh.common.util.NewsUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.common.view.CardRelativeLayout;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.NewsFooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.NewsHeadViewHolder;
import com.gh.gamecenter.adapter.viewholder.NewsImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder;
import com.gh.gamecenter.entity.NewsEntity;
import com.gh.gamecenter.listener.OnCallBackListener;
import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
/**
*
* @author 温冠超
* 资讯-攻略-数据适配器
*/
public class News4FragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private News4Fragment fragment;
private Context context;
private OnCallBackListener listener;
private List<NewsEntity> todayNewsList;
private List<NewsEntity> beforeNewsList;
private int todayPosition; // 今天head的位置
private int beforePosition; // 昨天/以前head的位置
private int itemCount;
private int cardMargin;
private boolean isLoading;
private boolean isOver;
private boolean isNetworkError;
public News4FragmentAdapter(News4Fragment fregment) {
this.fragment = fregment;
this.context = fregment.getActivity();
this.listener = fregment;
todayNewsList = new ArrayList<>();
beforeNewsList = new ArrayList<>();
itemCount = 0;
todayPosition = -1;
beforePosition = -1;
isLoading = false;
isOver = false;
isNetworkError = false;
cardMargin = (int) context.getResources().getDimension(R.dimen.cardview_margin);
}
public void addList(final int offset) {
if (isLoading) {
return;
}
isLoading = true;
RetrofitManager.getApi()
.getNews("攻略", 20, offset)
.map(new Func1<List<NewsEntity>, Integer>() {
@Override
public Integer call(List<NewsEntity> list) {
// 去除重复数据
List<NewsEntity> newList = NewsUtils.removeDuplicateData(beforeNewsList,
NewsUtils.removeDuplicateData(todayNewsList, list));
int count = 0;
if (newList.size() != 0) {
SimpleDateFormat format = new SimpleDateFormat("Mdd", Locale.getDefault());
int today = Integer.valueOf(format.format(new Date()));
// 数据分类,今天、昨天/以前
for (NewsEntity newsEntity : newList) {
int day = Integer.valueOf(format.format(
new Date(newsEntity.getPublishOn() * 1000)));
if (day == today) {
// 今天
todayNewsList.add(newsEntity);
if (todayNewsList.size() == 1) {
count += 2;
} else {
count += 1;
}
} else {
// 昨天/以前
beforeNewsList.add(newsEntity);
if (beforeNewsList.size() == 1) {
count += 2;
} else {
count += 1;
}
}
}
updateLabelPosition();
}
return count;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Response<Integer>(){
@Override
public void onResponse(Integer response) {
isLoading = false;
if (response != 0) {
int start = itemCount;
itemCount += response;
if (!fragment.isHidden() && !fragment.isEverpause()) {
notifyItemRangeInserted(start, response);
} else {
notifyDataSetChanged();
}
if (offset == 0) {
if (listener != null) {
listener.loadDone(null);
}
} else {
notifyItemChanged(getItemCount() - response - 2);
}
} else {
isOver = true;
notifyItemChanged(getItemCount() - 1);
}
if (listener != null) {
listener.loadDone();
}
}
@Override
public void onFailure(HttpException e) {
isLoading = false;
// 网络错误
if (offset == 0) {
if (listener != null) {
listener.loadError();
}
} else {
Toast.makeText(context, "加载失败,请检查网络状态", Toast.LENGTH_SHORT).show();
isNetworkError = true;
notifyItemChanged(getItemCount() - 1);
}
}
});
}
// 更新标签位置
private void updateLabelPosition() {
todayPosition = -1;
beforePosition = -1;
if (!todayNewsList.isEmpty()) {
todayPosition = 0;
}
if (!beforeNewsList.isEmpty()) {
if (todayPosition != -1) {
beforePosition = todayNewsList.size() + 1;
} else if (todayPosition == -1) {
beforePosition = 0;
}
}
}
@Override
public int getItemCount() {
if (itemCount == 0) {
return 0;
}
return itemCount + 1;
}
@Override
public int getItemViewType(int position) {
if (todayPosition != -1) {
if (position == todayPosition) {
return ItemViewType.NEWS_HEADER;
}
if (position == todayPosition + 1) {
if (!TextUtils.isEmpty(todayNewsList.get(0).getThumb())) {
return ItemViewType.NEWS_IMAGE;
} else {
return ItemViewType.NEWS_TEXT;
}
}
if (position > todayPosition + 1
&& position <= todayNewsList.size() + todayPosition) {
return ItemViewType.NEWS_TEXT;
}
}
if (beforePosition != -1) {
if (position == beforePosition) {
return ItemViewType.NEWS_HEADER;
}
if (position > beforePosition
&& position <= beforeNewsList.size() + beforePosition) {
return ItemViewType.NEWS_TEXT;
}
}
return ItemViewType.LOADING;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == ItemViewType.NEWS_HEADER) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.news_head_item, parent, false);
return new NewsHeadViewHolder(view);
} else if (viewType == ItemViewType.NEWS_IMAGE) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.news_image_item, parent, false);
return new NewsImageViewHolder(view);
} else if (viewType == ItemViewType.NEWS_TEXT) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.news_text_item, parent, false);
return new NewsTextViewHolder(view);
} else if (viewType == ItemViewType.LOADING) {
View view = LayoutInflater.from(parent.getContext()).inflate(
R.layout.news_footer_item, parent, false);
return new NewsFooterViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof NewsHeadViewHolder) {
initNewsHeadViewHolder((NewsHeadViewHolder) holder, position);
} else if (holder instanceof NewsImageViewHolder) {
initNewsImageViewHolder((NewsImageViewHolder) holder);
} else if (holder instanceof NewsTextViewHolder) {
initNewsTextViewHolder((NewsTextViewHolder) holder, position);
} else if (holder instanceof NewsFooterViewHolder) {
initNewsFooterViewHolder((NewsFooterViewHolder) holder);
}
}
private void initNewsHeadViewHolder(NewsHeadViewHolder viewHolder, int position) {
if (position == todayPosition) {
((CardRelativeLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(context, 8));
viewHolder.label.setText("今天");
viewHolder.label.setTextColor(0xFF1BA4FC);
}
if (position == beforePosition) {
CardRelativeLayout cardRelativeLayout = (CardRelativeLayout) viewHolder.itemView;
cardRelativeLayout.setmTop(0);
cardRelativeLayout.setmBottom(DisplayUtils.dip2px(context, 8));
viewHolder.label.setText("昨天/以前");
viewHolder.label.setTextColor(0xFF3A3A3A);
}
}
private void initNewsImageViewHolder(NewsImageViewHolder viewHolder) {
final NewsEntity newsEntity = todayNewsList.get(0);
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", newsEntity.getTitle());
kv.put("位置", "今天-大图");
DataUtils.onEvent(context, "点击", "资讯-攻略", kv);
DataCollectionUtils.uploadClick(context, "今天-大图", "资讯-攻略", newsEntity.getTitle());
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-攻略:今天)");
}
});
viewHolder.thumb.setImageURI(newsEntity.getThumb());
String title = newsEntity.getTitle();
if (title.contains("")) {
viewHolder.mainTitle.setText(title.substring(0, title.indexOf("") + 1));
viewHolder.subTitle.setVisibility(View.VISIBLE);
viewHolder.subTitle.setText(title.substring(title.indexOf("") + 1));
} else if (title.contains(" ")) {
viewHolder.mainTitle.setText(title.substring(0, title.indexOf(" ") + 1));
viewHolder.subTitle.setVisibility(View.VISIBLE);
viewHolder.subTitle.setText(title.substring(title.indexOf(" ") + 1));
} else {
viewHolder.mainTitle.setText(title);
viewHolder.subTitle.setVisibility(View.GONE);
}
}
private void initNewsTextViewHolder(NewsTextViewHolder viewHolder, int position) {
if (position > todayPosition
&& position <= todayNewsList.size() + todayPosition) {
// 第一个
if (position - todayPosition - 1 == 0) {
((CardLinearLayout) viewHolder.itemView).setmTop(0);
viewHolder.line.setVisibility(View.GONE);
} else {
((CardLinearLayout) viewHolder.itemView).setmTop(0);
viewHolder.line.setVisibility(View.VISIBLE);
}
// 最后一个
if (position - todayPosition == todayNewsList.size()) {
((CardLinearLayout) viewHolder.itemView).setBottom(true);
((CardLinearLayout) viewHolder.itemView).setmBottom(0);
} else {
((CardLinearLayout) viewHolder.itemView).setBottom(false);
((CardLinearLayout) viewHolder.itemView).setmBottom(0);
}
initNewsTextViewHolder(viewHolder, todayNewsList.get(position - todayPosition - 1), "今天");
} else {
// 第一个
if (position - beforePosition - 1 == 0) {
((CardLinearLayout) viewHolder.itemView).setmTop(0);
viewHolder.line.setVisibility(View.GONE);
} else {
((CardLinearLayout) viewHolder.itemView).setmTop(0);
viewHolder.line.setVisibility(View.VISIBLE);
}
// 最后一个
if (position - beforePosition == beforeNewsList.size()) {
((CardLinearLayout) viewHolder.itemView).setBottom(true);
((CardLinearLayout) viewHolder.itemView).setmBottom(cardMargin);
} else {
((CardLinearLayout) viewHolder.itemView).setBottom(false);
((CardLinearLayout) viewHolder.itemView).setmBottom(0);
}
initNewsTextViewHolder(viewHolder, beforeNewsList.get(position - beforePosition - 1), "昨天/以前");
}
}
private void initNewsTextViewHolder(NewsTextViewHolder viewHolder,
final NewsEntity newsEntity, final String entrance) {
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> kv = new HashMap<>();
kv.put("名字", newsEntity.getTitle());
kv.put("位置", entrance);
DataUtils.onEvent(context, "点击", "资讯-攻略", kv);
DataCollectionUtils.uploadClick(context, entrance, "资讯-攻略", newsEntity.getTitle());
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(context, newsEntity, "(资讯-攻略:" + entrance + ")");
}
});
viewHolder.type.setText(newsEntity.getType());
viewHolder.type.setBackgroundResource(NewsUtils.getDrawableIdByType(newsEntity.getType()));
viewHolder.title.setText(newsEntity.getTitle());
}
private void initNewsFooterViewHolder(NewsFooterViewHolder viewHolder) {
if (isNetworkError) {
viewHolder.loading.setVisibility(View.GONE);
viewHolder.hint.setText("加载失败,点击重试");
viewHolder.itemView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
isNetworkError = false;
notifyItemChanged(getItemCount() - 1);
addList(getNewsListSize());
}
});
} else if (isOver) {
viewHolder.itemView.setClickable(false);
viewHolder.loading.setVisibility(View.GONE);
viewHolder.hint.setText("加载完毕");
} else {
viewHolder.itemView.setClickable(false);
viewHolder.loading.setVisibility(View.VISIBLE);
viewHolder.hint.setText("加载中...");
}
}
public int getNewsListSize() {
return todayNewsList.size() + beforeNewsList.size();
}
public int getTodaySize() {
return todayNewsList.size();
}
public int getTodayPosition() {
return todayPosition;
}
public int getBeforePosition() {
return beforePosition;
}
public boolean isLoading() {
return isLoading;
}
public boolean isOver() {
return isOver;
}
public boolean isNetworkError() {
return isNetworkError;
}
public void setNetworkError(boolean isNetworkError) {
this.isNetworkError = isNetworkError;
}
}

View File

@ -53,9 +53,13 @@ import com.gh.gamecenter.retrofit.RetrofitManager;
import org.json.JSONObject;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import retrofit2.adapter.rxjava.HttpException;
@ -294,11 +298,39 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
likeCount.setText(String.valueOf(commentEntity.getVote()));
content.setText(commentEntity.getContent());
time.setText(commentEntity.getTime() + "");
userName.setText(commentEntity.getUser().getName());
userIcon.setImageURI(commentEntity.getUser().getIcon());
holder.list.addView(contentView);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd", Locale.getDefault());
try {
long today = format.parse(format.format(new Date())).getTime();
long day = commentEntity.getTime() * 1000;
if (day >= today && day < today + 86400 * 1000) {
long min = new Date().getTime()/1000 - day/1000;
int hour = (int) (min/ (60 * 60));
if (hour == 0) {
if (min < 60) {
time.setText("刚刚");
} else {
time.setText(String.format(Locale.getDefault(), "%d分钟前", (int) (min / 60)));
}
} else {
time.setText(String.format(Locale.getDefault(), "%d小时前", hour));
}
} else if (day >= today - 86400 * 1000 && day < today) {
format.applyPattern("HH:mm");
time.setText("昨天 ");
} else {
format.applyPattern("yyyy-MM-dd");
time.setText(format.format(day));
}
} catch (ParseException e) {
e.printStackTrace();
format.applyPattern("yyyy-MM-dd");
time.setText(format.format(commentEntity.getTime() * 1000));
}
if (commentEntity.getVote() == 0) {
likeCount.setVisibility(View.GONE);
} else { // 检查是否已点赞
@ -395,8 +427,8 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
Intent intent = new Intent(context, MessageDetailActivity.class);
intent.putExtra("newsId", id);
intent.putExtra("commentNum", -1);
intent.putExtra("entrance", entrance + "+(新闻详情[" + title + "])");
context.startActivity(intent);
// activity.startActivityForResult(intent, 1001);
}
});
@ -424,7 +456,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
// 统计阅读量
NewsUtils.statNewsViews(newsEntity.getId());
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(新闻详情:相关推荐)");
NewsUtils.startNewsDetailActivity(context, newsEntity, entrance + "+(新闻详情:相关推荐[" + (viewHolder.getPosition() + 1) + "])");
}
});
viewHolder.newsdetail_item_ll_news_more.addView(view);
@ -524,7 +556,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
DataCollectionUtils.uploadClick(context, "游戏信息", "新闻详情", newsDetailEntity.getTitle());
GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(新闻详情)");
GameUtils.startGameDetailActivity(context, gameEntity.getId(), entrance + "+(新闻详情[" + newsDetailEntity.getTitle() + "])");
}
});
}
@ -596,6 +628,7 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
checkIntent.putExtra("urls", imgs);
checkIntent.putExtra("current", current);
checkIntent.putExtra("ScaleType", "FIT_CENTER");
checkIntent.putExtra("entrance", entrance + "+(新闻详情[" + title + "])");
context.startActivity(checkIntent);
}
@ -609,11 +642,11 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
@JavascriptInterface
public void skip(String id, String type) {
if ("game".equals(type)) {
GameUtils.startGameDetailActivity(context, id, entrance);
GameUtils.startGameDetailActivity(context, id, entrance + "+(新闻详情[" + newsDetailEntity.getTitle() + "])");
} else if ("news".equals(type)) {
Intent intent = new Intent(context, NewsDetailActivity.class);
intent.putExtra("newsId", id);
intent.putExtra("entrance", entrance);
intent.putExtra("entrance", entrance + "+(新闻详情[" + newsDetailEntity.getTitle() + "])");
context.startActivity(intent);
}
}
@ -628,6 +661,10 @@ public class NewsDetailAdapter extends RecyclerView.Adapter {
this.title = title;
}
public String getTitle() {
return title;
}
public void setType(String type) {
this.type = type;
}

View File

@ -22,7 +22,6 @@ import com.gh.gamecenter.db.LibaoDao;
import com.gh.gamecenter.db.info.ConcernInfo;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
import com.gh.gamecenter.listener.OnCallBackListener;
import com.gh.gamecenter.manager.ConcernManager;
import com.gh.gamecenter.manager.GameManager;
import com.gh.gamecenter.retrofit.Response;
@ -41,10 +40,9 @@ import rx.schedulers.Schedulers;
* Created by LGT on 2016/8/15.
* 已关注界面-数据适配器
*/
public class ConcernFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class ConcernFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private OnCallBackListener listener;
private LibaoDao libaoDao;
@ -58,9 +56,8 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vi
private boolean isRemove;
public ConcernFragmentAdapter(ConcernFragment fragment) {
ConcernFragmentAdapter(ConcernFragment fragment) {
this.context = fragment.getActivity();
this.listener = fragment;
isRemove = false;
@ -76,7 +73,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vi
concernList = concernManager.getConcernGame();
if (concernList == null || concernList.isEmpty()) {
listener.loadEmpty();
fragment.loadEmpty();
} else {
init();
}

View File

@ -31,11 +31,12 @@ import de.greenrobot.event.EventBus;
public class InstallFragment extends BaseFragment {
@BindView(R.id.fm_install_rv_show) RecyclerView fm_install_rv_show;
private InstallFragmentAdapter adapter;
@BindView(R.id.reuse_nodata_skip) LinearLayout reuse_nodata_skip;
@BindView(R.id.reuse_nodata_skip_tv_hint) TextView reuse_nodata_skip_tv_hint;
@BindView(R.id.reuse_nodata_skip_tv_btn) TextView reuse_nodata_skip_tv_btn;
private InstallFragmentAdapter adapter;
private DataWatcher dataWatcher = new DataWatcher() {
@Override
public void onDataChanged(DownloadEntity downloadEntity) {

View File

@ -46,7 +46,7 @@ import rx.schedulers.Schedulers;
* Created by LGT on 2016/8/12.
* 已安装界面-数据适配器
*/
public class InstallFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class InstallFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
@ -62,7 +62,7 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vi
private LibaoDao libaoDao;
public InstallFragmentAdapter(InstallFragment fragment) {
InstallFragmentAdapter(InstallFragment fragment) {
this.context = fragment.getActivity();
gameList = new ArrayList<>();
@ -97,7 +97,7 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vi
}
}
public ArrayList<GameEntity> getGameList() {
ArrayList<GameEntity> getGameList() {
return gameList;
}
@ -242,7 +242,7 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter<RecyclerView.Vi
if (entity.getId().equals(id)) {
GameEntity newEntity = entity.clone();
newEntity.setLibaoExists(entity.isLibaoExists());
if (newEntity != null && newEntity.getApk().size() > 1) {
if (newEntity.getApk().size() > 1) {
for (ApkEntity apkEntity : newEntity.getApk()) {
if (sortedList.get(i).getPackageName().equals(apkEntity.getPackageName())) {
ArrayList<ApkEntity> list = new ArrayList<>();

View File

@ -230,11 +230,9 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
DataUtils.onEvent(getActivity(), "我的光环", "设置图标");
DataCollectionUtils.uploadClick(getActivity(), "设置图标", "我的光环");
startActivity(new Intent(getActivity(), SettingActivity.class));
} else if (id == R.id.me_tv_top_install) {
me_vp_show.setCurrentItem(0);
} else if (id == R.id.me_tv_top_concern) {
me_vp_show.setCurrentItem(1);
Intent intent = new Intent(getActivity(), SettingActivity.class);
intent.putExtra("entrance", "(我的光环)");
startActivity(intent);
} else if (id == R.id.me_tv_top_name) {
DataUtils.onEvent(getActivity(), "我的光环", "用户昵称");
DataCollectionUtils.uploadClick(getActivity(), "用户昵称", "我的光环");
@ -247,25 +245,27 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
DataCollectionUtils.uploadClick(getActivity(), "用户头像", "我的光环");
if (isLogin) {
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 0x123);
}
} else if (id == R.id.me_tv_top_install) {
me_vp_show.setCurrentItem(0);
} else if (id == R.id.me_tv_top_concern) {
me_vp_show.setCurrentItem(1);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0x123 && data != null) {
if (data != null && requestCode == 0x123) {
Uri selectedImage = data.getData();
if (selectedImage == null) {
return;
}
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
if (cursor == null) {
return;
}
@ -279,12 +279,12 @@ public class PersonalFragment extends Fragment implements View.OnClickListener,
// 上传头像
Intent intent = new Intent(getActivity(), CropImageActivity.class);
intent.putExtra("path", picturePath);
intent.putExtra("entrance", "(我的光环)");
startActivityForResult(intent, 0x124);
} else if (requestCode == 0x124 && data != null) {
} else if (data != null && requestCode == 0x124) {
String url = data.getExtras().getString("url");
SharedPreferences sp = getActivity().getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE);
sp.edit().putString("user_icon", url).apply();
// ImageUtils.getInstance(getActivity()).display(url, me_iv_top_icon, R.drawable.user_default_icon);
me_iv_top_icon.setImageURI(url);
}
}

View File

@ -40,6 +40,7 @@ public class DownloadReceiver extends BroadcastReceiver {
} else {
Intent intent2 = new Intent(context, DownloadManagerActivity.class);
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent2.putExtra("entrance", "(下载跳转)");
context.startActivity(intent2);
}
} else {
@ -48,6 +49,7 @@ public class DownloadReceiver extends BroadcastReceiver {
intent2.setAction(Intent.ACTION_MAIN);
intent2.addCategory(Intent.CATEGORY_LAUNCHER);
intent2.putExtra("to", "DownloadManagerActivity");
intent2.putExtra("entrance", "(下载跳转)");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}

View File

@ -42,6 +42,7 @@ public class InstallReceiver extends BroadcastReceiver {
Intent intent2 = new Intent(context, DownloadManagerActivity.class);
intent2.putExtra("currentItem", 0);
intent2.putExtra("path", path);
intent2.putExtra("entrance", "(安装跳转)");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
@ -53,6 +54,7 @@ public class InstallReceiver extends BroadcastReceiver {
intent2.putExtra("to", "DownloadManagerActivity");
intent2.putExtra("currentItem", 0);
intent2.putExtra("path", path);
intent2.putExtra("entrance", "(安装跳转)");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}

View File

@ -100,6 +100,7 @@ public class NotificationReceiver extends BroadcastReceiver {
Intent intent2 = new Intent(context, DownloadManagerActivity.class);
intent2.putExtra("currentItem", 1);
intent2.putExtra("isPushIntent", true);
intent2.putExtra("entrance", "(小米推送)");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}
@ -111,6 +112,7 @@ public class NotificationReceiver extends BroadcastReceiver {
intent2.putExtra("to", "DownloadManagerActivity");
intent2.putExtra("currentItem", 1);
intent2.putExtra("isPushIntent", true);
intent2.putExtra("entrance", "(小米推送)");
intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent2);
}

View File

@ -34,7 +34,7 @@ import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private OnCallBackListener listener;
@ -45,11 +45,17 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter<Recycl
private LibaoDao libaoDao;
private String key;
private String entrance;
public SearchGameDetailFragmentAdapter(SearchGameDetailFragment fragment, String key) {
SearchGameDetailFragmentAdapter(SearchGameDetailFragment fragment, String key) {
this.context = fragment.getActivity();
this.listener = fragment;
entrance = fragment.getActivity().getIntent().getStringExtra("entrance");
if (fragment.getActivity().getIntent().getBundleExtra("data") != null) {
entrance = fragment.getActivity().getIntent().getBundleExtra("data").getString("entrance");
}
gameList = new ArrayList<>();
locationMap = new ArrayMap<>();
@ -178,14 +184,14 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter<Recycl
DataCollectionUtils.uploadClick(context, "列表", "搜索", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(搜索)");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(搜索-列表[" + (viewHolder.getPosition() + 1) + "])");
}
});
DownloadItemUtils.setOnClickListener(context,
viewHolder.downloadBtn, gameEntity, position,
SearchGameDetailFragmentAdapter.this, "(游戏-推荐:" + gameEntity.getName() + "-列表)",
"游戏-推荐-" + gameEntity.getName() + ":" + gameEntity.getName());
SearchGameDetailFragmentAdapter.this, entrance + "+(搜索-列表[" + (viewHolder.getPosition() + 1) + "])",
"搜索-列表:" + gameEntity.getName());
DownloadItemUtils.updateItem(context, viewHolder.gameDes,
viewHolder.game_progressbar, viewHolder.game_ll_info, viewHolder.download_speed,
@ -223,7 +229,7 @@ public class SearchGameDetailFragmentAdapter extends RecyclerView.Adapter<Recycl
return locationMap;
}
public GameEntity getGameEntity(int location) {
GameEntity getGameEntity(int location) {
return gameList.get(location);
}
}

View File

@ -4,9 +4,7 @@ import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;

View File

@ -18,6 +18,7 @@ import com.gh.common.util.GameViewUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
import com.gh.gamecenter.adapter.viewholder.SearchHistoryViewHolder;
import com.gh.gamecenter.db.LibaoDao;
import com.gh.gamecenter.entity.ApkEntity;
import com.gh.gamecenter.entity.GameEntity;
@ -34,7 +35,7 @@ import retrofit2.adapter.rxjava.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class SearchGameListFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
class SearchGameListFragmentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Context context;
private OnCallBackListener listener;
@ -45,11 +46,17 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter<Recycler
private LibaoDao libaoDao;
private String key;
private String entrance;
public SearchGameListFragmentAdapter(SearchGameListFragment fragment, String key) {
SearchGameListFragmentAdapter(SearchGameListFragment fragment, String key) {
this.context = fragment.getActivity();
this.listener = fragment;
entrance = fragment.getActivity().getIntent().getStringExtra("entrance");
if (fragment.getActivity().getIntent().getBundleExtra("data") != null) {
entrance = fragment.getActivity().getIntent().getBundleExtra("data").getString("entrance");
}
libaoDao = new LibaoDao(context);
gameList = new ArrayList<>();
@ -164,14 +171,14 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter<Recycler
DataCollectionUtils.uploadClick(context, "列表", "搜索", gameEntity.getName());
GameUtils.startGameDetailActivity(context, gameEntity, "(搜索)");
GameUtils.startGameDetailActivity(context, gameEntity, entrance + "+(搜索-列表[" + (holder.getPosition() + 1) + "])");
}
});
DownloadItemUtils.setOnClickListener(context,
viewHolder.downloadBtn, gameEntity, position,
SearchGameListFragmentAdapter.this, "(游戏-推荐:" + gameEntity.getName() + "-列表)",
"游戏-推荐-" + gameEntity.getName() + ":" + gameEntity.getName());
SearchGameListFragmentAdapter.this, entrance + "+(搜索-列表[" + (viewHolder.getPosition() + 1) + "])",
"搜索-列表:" + gameEntity.getName());
DownloadItemUtils.updateItem(context, viewHolder.gameDes,
viewHolder.game_progressbar, viewHolder.game_ll_info, viewHolder.download_speed,

View File

@ -14,6 +14,7 @@ import com.gh.common.util.DisplayUtils;
import com.gh.common.view.CardLinearLayout;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder;
import com.gh.gamecenter.adapter.viewholder.SearchHistoryViewHolder;
import com.gh.gamecenter.db.SearchHistoryDao;
import com.gh.gamecenter.eventbus.EBSearch;
@ -22,7 +23,7 @@ import java.util.List;
import de.greenrobot.event.EventBus;
public class SearchHistoryFragmentAdapter extends RecyclerView.Adapter<ViewHolder> {
class SearchHistoryFragmentAdapter extends RecyclerView.Adapter<ViewHolder> {
private Context context;
@ -30,7 +31,7 @@ public class SearchHistoryFragmentAdapter extends RecyclerView.Adapter<ViewHolde
private List<String> historyList;
public SearchHistoryFragmentAdapter(Context context) {
SearchHistoryFragmentAdapter(Context context) {
this.context = context;
@ -41,7 +42,7 @@ public class SearchHistoryFragmentAdapter extends RecyclerView.Adapter<ViewHolde
}
}
public void clearSearchResult() {
private void clearSearchResult() {
if (historyList != null) {
historyList.clear();
}