diff --git a/app/build.gradle b/app/build.gradle
index e8ca6aac38..d6af55b68f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -101,7 +101,7 @@ dependencies {
testCompile test.junit
compile fileTree(include: '*.jar', dir: 'libs')
compile libs.supportMultidex
- compile libs.supportRecyclerView
+ compile libs.supportDesign
compile libs.supportAppCompat
compile libs.supportAnnotation
compile libs.supportPercent
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c43dd43b50..2fac854813 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -92,7 +92,8 @@
android:screenOrientation = "portrait" />
+ android:screenOrientation = "portrait"
+ android:theme="@style/Theme.AppCompat.Light"/>
diff --git a/app/src/main/java/com/gh/base/BaseFragment.java b/app/src/main/java/com/gh/base/BaseFragment.java
index 7706024a58..8af0e4623e 100644
--- a/app/src/main/java/com/gh/base/BaseFragment.java
+++ b/app/src/main/java/com/gh/base/BaseFragment.java
@@ -3,9 +3,14 @@ package com.gh.base;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
-import android.view.*;
-import butterknife.ButterKnife;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
import com.gh.gamecenter.listener.OnCallBackListener;
+
+import butterknife.ButterKnife;
import de.greenrobot.event.EventBus;
/**
@@ -41,6 +46,10 @@ public class BaseFragment extends Fragment implements OnCallBackListener {
return view;
}
+ public void toast(String msg) {
+ Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
+ }
+
public boolean isEverpause() {
return isEverpause;
}
diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
index 06635a2f23..968bca79e8 100644
--- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java
@@ -1,297 +1,110 @@
package com.gh.gamecenter;
import android.os.Bundle;
-import android.support.v7.widget.DefaultItemAnimator;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
+import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.ViewPager;
import android.view.View;
-import android.view.ViewGroup;
import android.widget.LinearLayout;
-import android.widget.TextView;
-import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
-import com.gh.base.BaseActivity;
-import com.gh.common.util.DisplayUtils;
-import com.gh.common.util.DownloadItemUtils;
-import com.gh.common.view.VerticalItemDecoration;
-import com.gh.download.DataWatcher;
-import com.gh.download.DownloadEntity;
-import com.gh.download.DownloadManager;
-import com.gh.gamecenter.adapter.SubjectAdapter;
-import com.gh.gamecenter.adapter.SubjectTypeAdapter;
-import com.gh.gamecenter.entity.ApkEntity;
+import com.gh.base.BaseFragmentActivity;
+import com.gh.gamecenter.adapter.VPFragmentAdapter;
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.retrofit.JSONObjectResponse;
+import com.gh.gamecenter.retrofit.Response;
import com.gh.gamecenter.retrofit.RetrofitManager;
-
-import org.json.JSONException;
-import org.json.JSONObject;
+import com.gh.gamecenter.subject.SubjectFragment;
import java.util.ArrayList;
+import java.util.List;
import butterknife.BindView;
+import retrofit2.HttpException;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
-public class SubjectActivity extends BaseActivity implements SubjectTypeAdapter.OnSelectTypeListener {
+/**
+ * Created by khy on 2017/4/29.
+ */
- @BindView(R.id.subject_list)
- RecyclerView subject_list;
- @BindView(R.id.subject_type_list)
- RecyclerView subject_type_list;
- @BindView(R.id.subject_pb_loading)
- ProgressBarCircularIndeterminate subject_pb_loading;
+public class SubjectActivity extends BaseFragmentActivity {
+
+ @BindView(R.id.subject_viewpager)
+ ViewPager mViewPager;
+ @BindView(R.id.subject_tab)
+ TabLayout mTabLayout;
@BindView(R.id.reuse_no_connection)
- LinearLayout reuse_no_connection;
- @BindView(R.id.reuse_none_data)
- LinearLayout mNoData;
-
- private SubjectAdapter adapter;
- private LinearLayoutManager layoutManager;
+ LinearLayout mNoConn;
private String mId;
private String mName;
- private String mEntrance;
- private String mType;
- private boolean mIsOrder;
- private int page = 1;
-
- private String type;
-
- private boolean isEverpause = false;
-
- // 黄壮华 添加观察者 修改2015/8/15
- private DataWatcher dataWatcher = new DataWatcher() {
- @Override
- public void onDataChanged(DownloadEntity downloadEntity) {
- ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- gameEntity = adapter.getSubjectList().get(location);
- if (gameEntity != null) {
- DownloadItemUtils.processDate(SubjectActivity.this, gameEntity, downloadEntity,
- adapter, location);
- }
- }
- }
- }
- };
+ private Bundle mBundle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
-
- View contentView = View.inflate(this, R.layout.activity_subject, null);
- mId = getIntent().getStringExtra("id");
- mName = getIntent().getStringExtra("name");
- mIsOrder = getIntent().getBooleanExtra("order", false);
- mEntrance = getIntent().getStringExtra("entrance");
+ mBundle = getIntent().getExtras();
if (getIntent().getBundleExtra("data") != null) {
- mId = getIntent().getBundleExtra("data").getString("id");
- mName = getIntent().getBundleExtra("data").getString("name");
- mIsOrder = getIntent().getBundleExtra("data").getBoolean("order", false);
- mEntrance = getIntent().getBundleExtra("data").getString("entrance");
+ mBundle = getIntent().getBundleExtra("data");
}
- init(contentView, mName);
+ mId = mBundle.getString("id");
+ mName = mBundle.getString("name");
- type = "全部";
-
- reuse_no_connection.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- subject_pb_loading.setVisibility(View.VISIBLE);
- subject_list.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- adapter = new SubjectAdapter(SubjectActivity.this, SubjectActivity.this, type, mId, mName, mEntrance, mIsOrder);
- subject_list.setAdapter(adapter);
- }
- });
-
- layoutManager = new LinearLayoutManager(this);
-
- ((DefaultItemAnimator) subject_list.getItemAnimator()).setSupportsChangeAnimations(false);
- subject_list.addItemDecoration(new VerticalItemDecoration(this, 8, true));
- subject_list.setHasFixedSize(true);
- subject_list.setLayoutManager(layoutManager);
- adapter = new SubjectAdapter(SubjectActivity.this, SubjectActivity.this, type, mId, mName, mEntrance, mIsOrder);
- subject_list.setAdapter(adapter);
-
- subject_list.addOnScrollListener(new RecyclerView.OnScrollListener() {
- @Override
- public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
- super.onScrollStateChanged(recyclerView, newState);
- if (!adapter.isRemove() && adapter.isLoaded() && newState == RecyclerView.SCROLL_STATE_IDLE
- && adapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) {
- adapter.initList(page, type);
- }
- }
- });
-
- GridLayoutManager layout = new GridLayoutManager(this, 4) {
- @Override
- public boolean canScrollVertically() {
- return false;
- }
- };
- subject_type_list.setLayoutManager(layout);
-
- if (TextUtils.isEmpty(mName) && !TextUtils.isEmpty(mId)) {
- getSubjectName(mId);
- }
+ View view = View.inflate(this, R.layout.activity_subject, null);
+ init(view, mName);
+ loadSubjectType();
}
- private void getSubjectName(String id) {
- RetrofitManager.getApi()
- .getSubjectName(id)
+ private void loadSubjectType() {
+ RetrofitManager
+ .getApi()
+ .getColumnHead(mId, "true")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe(new JSONObjectResponse() {
+ .subscribe(new Response>(){
@Override
- public void onResponse(JSONObject response) {
- try {
- TextView actionbar_tv_title = (TextView) findViewById(R.id.actionbar_tv_title);
- actionbar_tv_title.setText(response.getString("name"));
- } catch (JSONException e) {
- e.printStackTrace();
+ public void onResponse(List response) {
+ super.onResponse(response);
+ if (response == null) return;
+
+ GameEntity gameEntity = response.get(0);
+ ArrayList tag = gameEntity.getTag();
+ if (tag == null) {
+ tag = new ArrayList<>(1);
}
+ tag.add(0, "全部");
+ setupViewPager(tag);
+ }
+
+ @Override
+ public void onFailure(HttpException e) {
+ super.onFailure(e);
+ ArrayList tag = new ArrayList<>(1);
+ tag.add(0, "全部");
+ setupViewPager(tag);
}
});
}
- @Override
- public void loadError() {
- if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
- subject_pb_loading.setVisibility(View.GONE);
+ private void setupViewPager(ArrayList tag) {
+ if (tag.size() > 1) {
+ mTabLayout.setVisibility(View.VISIBLE);
}
- toast("加载失败,请检查网络状态");
- subject_list.setVisibility(View.GONE);
- reuse_no_connection.setVisibility(View.VISIBLE);
- mNoData.setVisibility(View.GONE);
- }
-
- @Override
- public void loadDone() {
- mNoData.setVisibility(View.GONE);
- if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
- subject_pb_loading.setVisibility(View.GONE);
+ List fragments = new ArrayList<>();
+ for (String s : tag) {
+ mTabLayout.addTab(mTabLayout.newTab().setText(s));
+ SubjectFragment fragment = new SubjectFragment();
+ fragment.setType(s);
+ fragment.setArguments(mBundle);
+ fragments.add(fragment);
}
- page++;
- }
- @Override
- public void loadEmpty() {
- super.loadEmpty();
- mNoData.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- }
-
- @Override
- public void loadDone(Object obj) {
- super.loadDone(obj);
- // 初始化顶部分类标签
- if (!type.equals("全部")) return;
-
- ArrayList gameType = (ArrayList) obj;
- gameType.add(0, "全部");
- ViewGroup.LayoutParams params = subject_type_list.getLayoutParams();
- params.height = (int) Math.ceil(gameType.size() / 4f) * DisplayUtils.dip2px(this, 37);
- subject_type_list.setLayoutParams(params);
- ((DefaultItemAnimator) subject_type_list.getItemAnimator()).setSupportsChangeAnimations(false);
- SubjectTypeAdapter adapter = new SubjectTypeAdapter(SubjectActivity.this, SubjectActivity.this, gameType);
- subject_type_list.setAdapter(adapter);
- }
-
- // 下载被删除事件
- public void onEventMainThread(EBDownloadStatus status) {
- if ("delete".equals(status.getStatus())) {
- DownloadManager.getInstance(this).removePlatform(status.getName(), status.getPlatform());
-
- ArrayList locationList = adapter.getLocationMap().get(status.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- gameEntity = adapter.getSubjectList().get(location);
- if (gameEntity != null && gameEntity.getEntryMap() != null) {
- gameEntity.getEntryMap().remove(status.getPlatform());
- }
- adapter.notifyItemChanged(location);
- }
- }
- }
- }
-
- public void onEventMainThread(EBPackage busFour) {
- ArrayList locationList = adapter.getLocationMap().get(busFour.getPackageName());
- if (locationList != null) {
- GameEntity gameEntity;
- for (int location : locationList) {
- if ("安装".equals(busFour.getType())) {
- gameEntity = adapter.getSubjectList().get(location);
- 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) {
- subject_list.setVisibility(View.VISIBLE);
- subject_pb_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- adapter = new SubjectAdapter(SubjectActivity.this,SubjectActivity.this, type, mId, mName, mEntrance, mIsOrder);
- subject_list.setAdapter(adapter);
- }
- }
- }
-
- @Override
- public void onResume() {
- super.onResume();
- if (isEverpause) {
- for (GameEntity entity : adapter.getSubjectList()) {
- entity.setEntryMap(DownloadManager.getInstance(this).getEntryMap(entity.getName()));
- }
- }
- isEverpause = false;
- DownloadManager.getInstance(getApplicationContext()).addObserver(dataWatcher);
- }
-
- @Override
- public void onPause() {
- super.onPause();
- isEverpause = true;
- DownloadManager.getInstance(getApplicationContext()).removeObserver(dataWatcher);
- }
-
- @Override
- public void onSelectType(String type) {
- page = 1;
- this.type = type;
- subject_list.setVisibility(View.VISIBLE);
- subject_pb_loading.setVisibility(View.VISIBLE);
- reuse_no_connection.setVisibility(View.GONE);
- adapter = new SubjectAdapter(this,this, type, mId, mName, mEntrance, mIsOrder);
- subject_list.setAdapter(adapter);
+ VPFragmentAdapter adapter =
+ new VPFragmentAdapter(getSupportFragmentManager(), fragments, tag);
+ mViewPager.setAdapter(adapter);
+ mTabLayout.setupWithViewPager(mViewPager);
+ mTabLayout.setTabsFromPagerAdapter(adapter);
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
index 849edc5e60..57601ed48e 100644
--- a/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
+++ b/app/src/main/java/com/gh/gamecenter/SuggestionActivity.java
@@ -1,45 +1,84 @@
package com.gh.gamecenter;
import android.app.Dialog;
-import android.content.*;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
import android.database.Cursor;
-import android.graphics.*;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.Rect;
import android.net.Uri;
-import android.os.*;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
-import android.view.*;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.view.Window;
import android.view.inputmethod.InputMethodManager;
-import android.widget.*;
-import butterknife.BindView;
-import butterknife.OnClick;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.ProgressBar;
+import android.widget.RelativeLayout;
+import android.widget.ScrollView;
+import android.widget.TextView;
+
import com.gh.base.BaseActivity;
import com.gh.common.constant.Config;
-import com.gh.common.util.*;
+import com.gh.common.util.DialogUtils;
+import com.gh.common.util.DisplayUtils;
+import com.gh.common.util.FileUtils;
+import com.gh.common.util.PackageUtils;
+import com.gh.common.util.TokenUtils;
+import com.gh.common.util.Utils;
import com.gh.gamecenter.entity.InstallGameEntity;
import com.gh.gamecenter.retrofit.JSONObjectResponse;
import com.gh.gamecenter.retrofit.RetrofitManager;
-import com.gh.gamecenter.suggest.*;
-import okhttp3.*;
-import org.json.*;
+import com.gh.gamecenter.suggest.SuggestPicAdapter;
+import com.gh.gamecenter.suggest.SuggestSelectGameAdapter;
+import com.gh.gamecenter.suggest.SuggestTypeAdapter;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import butterknife.BindView;
+import butterknife.OnClick;
+import okhttp3.MediaType;
+import okhttp3.RequestBody;
+import okhttp3.ResponseBody;
import retrofit2.HttpException;
import rx.Observable;
import rx.Observer;
-import rx.*;
+import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import rx.schedulers.Schedulers;
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
/**
* Created by khy on 2017/3/31.
*/
@@ -103,7 +142,12 @@ public class SuggestionActivity extends BaseActivity implements SuggestTypeAdapt
Utils.log("picturePath = " + picturePath);
- mAdapter.addFileList(picturePath);
+ File file = new File(picturePath);
+ if (file.length() > 8 * 1024 * 1024) {
+ toast("图片大小不能超过8M");
+ } else {
+ mAdapter.addFileList(picturePath);
+ }
}
}
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java
index 5540a432a3..4061c44bc3 100644
--- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java
@@ -1,5 +1,6 @@
package com.gh.gamecenter.adapter;
+import android.content.Context;
import android.support.v4.util.ArrayMap;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
@@ -18,7 +19,6 @@ import com.gh.common.util.GameViewUtils;
import com.gh.common.util.ImageUtils;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.R;
-import com.gh.gamecenter.SubjectActivity;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder;
import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder;
@@ -60,7 +60,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter {
private boolean mIsOrder;
private boolean mIsLoaded;
- public SubjectAdapter(SubjectActivity context, OnCallBackListener listener, String type, String id
+ public SubjectAdapter(Context context, OnCallBackListener listener, String type, String id
, String name, String entrance, boolean isOrder) {
super(context);
this.mOnCallBackListener = listener;
@@ -318,7 +318,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
@@ -393,7 +393,7 @@ public class SubjectAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
diff --git a/app/src/main/java/com/gh/gamecenter/adapter/VPFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/VPFragmentAdapter.java
index 9e68fb84af..2592b8813f 100644
--- a/app/src/main/java/com/gh/gamecenter/adapter/VPFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/adapter/VPFragmentAdapter.java
@@ -2,11 +2,11 @@ package com.gh.gamecenter.adapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
+import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
-public class VPFragmentAdapter extends FragmentStatePagerAdapter {
+public class VPFragmentAdapter extends FragmentPagerAdapter {
private List mFragments;
private List mTitles;
diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java
index 38652a18f0..2eac42d27b 100644
--- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.java
@@ -36,10 +36,10 @@ import com.gh.common.util.Utils;
import com.gh.common.view.AutoScrollViewPager;
import com.gh.download.DownloadManager;
import com.gh.gamecenter.KaiFuActivity;
+import com.gh.gamecenter.SubjectActivity;
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.BaseRecyclerAdapter;
import com.gh.gamecenter.adapter.ImagePagerAdapter;
import com.gh.gamecenter.adapter.viewholder.FooterViewHolder;
@@ -572,8 +572,6 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
}
private void initGameViewPagerViewHolder(final GameViewPagerViewHolder viewHolder) {
- ViewGroup.LayoutParams params = viewHolder.itemView.getLayoutParams();
- params.height = topHeight;
if (isSlideError) {
viewHolder.viewpager_tv_failure.setVisibility(View.VISIBLE);
@@ -642,16 +640,17 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
}
}
});
- viewHolder.viewpager_tv_failure.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- isSlideError = false;
- notifyItemChanged(0);
- initSlide(false);
- }
- });
}
+ 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 {
@@ -669,7 +668,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
//初始化专题入口
viewHolder.subjectLl.removeAllViews();
- for (int i = 0; i < 6; i++) {
+ for (int i = 0; i < 5; i++) {
View contentView = View.inflate(mContext, R.layout.home_subject_entrance_item, null);
TextView subjectName = (TextView) contentView.findViewById(R.id.home_subject_name);
SimpleDraweeView subjectIcon = (SimpleDraweeView) contentView.findViewById(R.id.home_subject_icon);
@@ -682,7 +681,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
subjectName.setText(subjectDigestList.get(i).getName());
}
- if (i == 5) {
+ if (i == 4) {
subjectName.setText("开服表");
subjectIcon.setImageURI(Uri.parse("res:///" + R.drawable.home_entrance_kaifu));
}
@@ -691,7 +690,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
contentView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (finalI < 5 && !isSubjectDigestError && subjectDigestList.size() > finalI) {
+ if (finalI < 4 && !isSubjectDigestError && subjectDigestList.size() > finalI) {
Intent intent = new Intent(mContext, SubjectActivity.class);
intent.putExtra("id", subjectDigestList.get(finalI).getColumnId());
intent.putExtra("name", subjectDigestList.get(finalI).getColumnName());
@@ -702,7 +701,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
DataCollectionUtils.uploadPosition(mContext, "游戏", (finalI + 1) + "",
subjectDigestList.get(finalI).getName());
- } else if (finalI == 5) {
+ } else if (finalI == 4) {
Intent intent = new Intent(mContext, KaiFuActivity.class);
intent.putExtra("entrance", "(游戏-专题:开服表[1-6])");
mContext.startActivity(intent);
@@ -756,7 +755,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
@@ -869,7 +868,7 @@ class GameFragmentAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java
index db72457692..c59f580a29 100644
--- a/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/gamedetail/XinXiAdapter.java
@@ -88,9 +88,10 @@ public class XinXiAdapter extends BaseRecyclerAdapter {
name = "游戏详情";
- getGameNews();
-
- initGameIds();
+ if (mGameEntity != null) {
+ getGameNews();
+ initGameIds();
+ }
}
diff --git a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java
index 5f5206165e..95de5306b1 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/ConcernFragmentAdapter.java
@@ -201,7 +201,7 @@ class ConcernFragmentAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
diff --git a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java
index 67a0300391..0054b0245d 100644
--- a/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/personal/InstallFragmentAdapter.java
@@ -454,7 +454,7 @@ class InstallFragmentAdapter extends BaseRecyclerAdapter {
holder.gameServerType.setVisibility(View.VISIBLE);
holder.gameServerType.setText(serverType);
if ("删档内测".equals(serverType) || "不删档内测".equals(serverType)) {
- holder.gameServerType.setBackgroundResource(R.drawable.textview_cancel_up);
+ holder.gameServerType.setBackgroundResource(R.drawable.textview_server_tag);
if ("删档内测".equals(serverType)) {
paddRight = DisplayUtils.dip2px(mContext, 50);
} else {
diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
index 209fcf7d79..fbf2c87420 100644
--- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
+++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java
@@ -5,18 +5,23 @@ import android.graphics.Color;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.text.TextUtils;
-import android.view.*;
+import android.view.Gravity;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
import android.widget.LinearLayout;
import android.widget.TextView;
+
import com.gh.common.util.DisplayUtils;
import com.gh.gamecenter.R;
import com.gh.gamecenter.adapter.BaseRecyclerAdapter;
import com.gh.gamecenter.db.SearchHistoryDao;
import com.gh.gamecenter.eventbus.EBSearch;
-import de.greenrobot.event.EventBus;
import java.util.List;
+import de.greenrobot.event.EventBus;
+
class SearchHistoryFragmentAdapter extends BaseRecyclerAdapter {
private SearchHistoryDao dao;
@@ -86,6 +91,8 @@ class SearchHistoryFragmentAdapter extends BaseRecyclerAdapter {
EventBus.getDefault().post(new EBSearch("remen", key));
dao.add(key);
}
+ InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
});
}
diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java
new file mode 100644
index 0000000000..1b7384b0fa
--- /dev/null
+++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java
@@ -0,0 +1,286 @@
+package com.gh.gamecenter.subject;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.widget.DefaultItemAnimator;
+import android.support.v7.widget.GridLayoutManager;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
+import com.gh.base.BaseFragment;
+import com.gh.common.util.DownloadItemUtils;
+import com.gh.common.view.VerticalItemDecoration;
+import com.gh.download.DataWatcher;
+import com.gh.download.DownloadEntity;
+import com.gh.download.DownloadManager;
+import com.gh.gamecenter.R;
+import com.gh.gamecenter.adapter.SubjectAdapter;
+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.EBUISwitch;
+import com.gh.gamecenter.news.NewsFragment;
+import com.gh.gamecenter.retrofit.JSONObjectResponse;
+import com.gh.gamecenter.retrofit.RetrofitManager;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+
+import butterknife.BindView;
+import rx.android.schedulers.AndroidSchedulers;
+import rx.schedulers.Schedulers;
+
+/**
+ * Created by khy on 2017/5/3.
+ */
+
+public class SubjectFragment extends BaseFragment {
+
+ @BindView(R.id.subject_list)
+ RecyclerView subject_list;
+ @BindView(R.id.subject_type_list)
+ RecyclerView subject_type_list;
+ @BindView(R.id.subject_pb_loading)
+ ProgressBarCircularIndeterminate subject_pb_loading;
+ @BindView(R.id.reuse_no_connection)
+ LinearLayout reuse_no_connection;
+ @BindView(R.id.reuse_none_data)
+ LinearLayout mNoData;
+
+ private SubjectAdapter adapter;
+ private LinearLayoutManager layoutManager;
+
+ private String mId;
+ private String mName;
+ private String mEntrance;
+ private String mType;
+ private boolean mIsOrder;
+
+ private int page = 1;
+
+
+ // 黄壮华 添加观察者 修改2015/8/15
+ private DataWatcher dataWatcher = new DataWatcher() {
+ @Override
+ public void onDataChanged(DownloadEntity downloadEntity) {
+ ArrayList locationList = adapter.getLocationMap().get(downloadEntity.getPackageName());
+ if (locationList != null) {
+ GameEntity gameEntity;
+ for (int location : locationList) {
+ gameEntity = adapter.getSubjectList().get(location);
+ if (gameEntity != null) {
+ DownloadItemUtils.processDate(getContext(), gameEntity, downloadEntity,
+ adapter, location);
+ }
+ }
+ }
+ }
+ };
+
+ public void setType(String type) {
+ mType = type;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ Bundle arguments = getArguments();
+ mId = arguments.getString("id");
+ mName = arguments.getString("name");
+ mIsOrder = arguments.getBoolean("order");
+ mEntrance = arguments.getString("entrance");
+ init(R.layout.fragment_subject);
+
+ reuse_no_connection.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ subject_pb_loading.setVisibility(View.VISIBLE);
+ subject_list.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new SubjectAdapter(getContext(), SubjectFragment.this, mType, mId, mName, mEntrance, mIsOrder);
+ subject_list.setAdapter(adapter);
+ }
+ });
+
+ layoutManager = new LinearLayoutManager(getContext());
+
+ ((DefaultItemAnimator) subject_list.getItemAnimator()).setSupportsChangeAnimations(false);
+ subject_list.addItemDecoration(new VerticalItemDecoration(getContext(), 8, true));
+ subject_list.setHasFixedSize(true);
+ subject_list.setLayoutManager(layoutManager);
+ adapter = new SubjectAdapter(getContext(), this, mType, mId, mName, mEntrance, mIsOrder);
+ subject_list.setAdapter(adapter);
+
+ subject_list.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ @Override
+ public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
+ super.onScrollStateChanged(recyclerView, newState);
+ if (!adapter.isRemove() && adapter.isLoaded() && newState == RecyclerView.SCROLL_STATE_IDLE
+ && adapter.getItemCount() == layoutManager.findLastVisibleItemPosition() + 1) {
+ adapter.initList(page, mType);
+ }
+ }
+ });
+
+ GridLayoutManager layout = new GridLayoutManager(getContext(), 4) {
+ @Override
+ public boolean canScrollVertically() {
+ return false;
+ }
+ };
+ subject_type_list.setLayoutManager(layout);
+
+ if (TextUtils.isEmpty(mName) && !TextUtils.isEmpty(mId)) {
+ getSubjectName(mId);
+ }
+
+ }
+
+ private void getSubjectName(String id) {
+ RetrofitManager.getApi()
+ .getSubjectName(id)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new JSONObjectResponse() {
+ @Override
+ public void onResponse(JSONObject response) {
+ try {
+ TextView actionbar_tv_title = (TextView) view.findViewById(R.id.actionbar_tv_title);
+ actionbar_tv_title.setText(response.getString("name"));
+ } catch (JSONException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+ }
+
+ @Override
+ public void loadError() {
+ if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
+ subject_pb_loading.setVisibility(View.GONE);
+ }
+ toast("加载失败,请检查网络状态");
+ subject_list.setVisibility(View.GONE);
+ reuse_no_connection.setVisibility(View.VISIBLE);
+ mNoData.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void loadDone() {
+ mNoData.setVisibility(View.GONE);
+ if (subject_pb_loading != null && subject_pb_loading.getVisibility() == View.VISIBLE) {
+ subject_pb_loading.setVisibility(View.GONE);
+ }
+ page++;
+ }
+
+ @Override
+ public void loadEmpty() {
+ super.loadEmpty();
+ mNoData.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void loadDone(Object obj) {
+ super.loadDone(obj);
+ // 初始化顶部分类标签
+ if (!mType.equals("全部")) return;
+
+ }
+
+ // 下载被删除事件
+ public void onEventMainThread(EBDownloadStatus status) {
+ if ("delete".equals(status.getStatus())) {
+ DownloadManager.getInstance(getContext()).removePlatform(status.getName(), status.getPlatform());
+
+ ArrayList locationList = adapter.getLocationMap().get(status.getPackageName());
+ if (locationList != null) {
+ GameEntity gameEntity;
+ for (int location : locationList) {
+ gameEntity = adapter.getSubjectList().get(location);
+ if (gameEntity != null && gameEntity.getEntryMap() != null) {
+ gameEntity.getEntryMap().remove(status.getPlatform());
+ }
+ adapter.notifyItemChanged(location);
+ }
+ }
+ }
+ }
+
+ public void onEventMainThread(EBPackage busFour) {
+ ArrayList locationList = adapter.getLocationMap().get(busFour.getPackageName());
+ if (locationList != null) {
+ GameEntity gameEntity;
+ for (int location : locationList) {
+ if ("安装".equals(busFour.getType())) {
+ gameEntity = adapter.getSubjectList().get(location);
+ 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) {
+ subject_list.setVisibility(View.VISIBLE);
+ subject_pb_loading.setVisibility(View.VISIBLE);
+ reuse_no_connection.setVisibility(View.GONE);
+ adapter = new SubjectAdapter(getContext(), this, mType, mId, mName, mEntrance, mIsOrder);
+ subject_list.setAdapter(adapter);
+ }
+ }
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ if (isEverpause) {
+ for (GameEntity entity : adapter.getSubjectList()) {
+ entity.setEntryMap(DownloadManager.getInstance(getContext()).getEntryMap(entity.getName()));
+ }
+ }
+ isEverpause = false;
+ DownloadManager.getInstance(getContext()).addObserver(dataWatcher);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ isEverpause = true;
+ DownloadManager.getInstance(getContext()).removeObserver(dataWatcher);
+ }
+
+ // 资讯Fragment界面切换事件
+ public void onEventMainThread(EBUISwitch busNine) {
+ if (NewsFragment.EB_NEWSFRAGMENT_TAG.equals(busNine.getFrom())) {
+ if (busNine.getPosition() == 0) {
+ if (subject_pb_loading.getVisibility() == View.VISIBLE) {
+ adapter.initList(1, mType);
+ }
+ }
+ }
+ }
+
+}
diff --git a/app/src/main/res/drawable-hdpi/platform_vote.jpg b/app/src/main/res/drawable-hdpi/platform_vote.jpg
deleted file mode 100644
index 67d4347e8d..0000000000
Binary files a/app/src/main/res/drawable-hdpi/platform_vote.jpg and /dev/null differ
diff --git a/app/src/main/res/drawable-hdpi/platform_vote.png b/app/src/main/res/drawable-hdpi/platform_vote.png
new file mode 100644
index 0000000000..e26eae50c6
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/platform_vote.png differ
diff --git a/app/src/main/res/drawable/textview_server_tag.xml b/app/src/main/res/drawable/textview_server_tag.xml
new file mode 100644
index 0000000000..f7251d364b
--- /dev/null
+++ b/app/src/main/res/drawable/textview_server_tag.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_subject.xml b/app/src/main/res/layout/activity_subject.xml
index 1476a095d8..90adceba96 100644
--- a/app/src/main/res/layout/activity_subject.xml
+++ b/app/src/main/res/layout/activity_subject.xml
@@ -1,42 +1,34 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_suggest.xml b/app/src/main/res/layout/activity_suggest.xml
index 642b87acff..5e0ef9fb97 100644
--- a/app/src/main/res/layout/activity_suggest.xml
+++ b/app/src/main/res/layout/activity_suggest.xml
@@ -64,7 +64,8 @@
android:hint = "@string/suggest_content_hint"
android:textSize = "14sp"
android:textColorHint = "@color/content"
- android:lineSpacingMultiplier = "1.2" />
+ android:lineSpacingMultiplier = "1.2"
+ android:maxLength="256"/>
+ android:textSize = "14sp"
+ android:maxLength="64"/>
+ android:textSize = "14sp"
+ android:maxLength="64"/>
diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml
index 1bf9f8c249..a0c60866a9 100644
--- a/app/src/main/res/layout/activity_web.xml
+++ b/app/src/main/res/layout/activity_web.xml
@@ -21,12 +21,6 @@
android:layout_width = "match_parent"
android:layout_height = "3dp"
android:progressDrawable = "@drawable/progressbar_bg_style" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/game_viewpager_item.xml b/app/src/main/res/layout/game_viewpager_item.xml
index 6c51b60617..145155dad0 100644
--- a/app/src/main/res/layout/game_viewpager_item.xml
+++ b/app/src/main/res/layout/game_viewpager_item.xml
@@ -11,8 +11,7 @@
android:id = "@+id/view_pager"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
- android:overScrollMode = "never" >
-
+ android:overScrollMode = "never" />
-
+ android:layout_marginRight = "10dp" />
-
+ android:paddingTop = "2dp" />
diff --git a/dependencies.gradle b/dependencies.gradle
index ab81836566..4649e41800 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -24,6 +24,7 @@ ext {
//Libraries
androidSupport = "23.2.1"
+ supportDesign = "23.2.1"
multidex = "1.0.1"
butterKnife = "8.4.0"
eventbus = "3.0.0"