From c1ebcf33e54cebd683a1619fb7375b01a26598c3 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 4 May 2017 14:42:36 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5design=E5=8C=85=EF=BC=8C?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=B8=93=E9=A2=98=E6=94=B9=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 3 +- .../main/java/com/gh/base/BaseFragment.java | 13 +- .../com/gh/gamecenter/SubjectActivity.java | 317 ++++-------------- .../com/gh/gamecenter/SuggestionActivity.java | 82 +++-- .../gh/gamecenter/adapter/SubjectAdapter.java | 8 +- .../gamecenter/adapter/VPFragmentAdapter.java | 4 +- .../gamecenter/game/GameFragmentAdapter.java | 33 +- .../gamecenter/gamedetail/XinXiAdapter.java | 7 +- .../personal/ConcernFragmentAdapter.java | 2 +- .../personal/InstallFragmentAdapter.java | 2 +- .../search/SearchHistoryFragmentAdapter.java | 11 +- .../gamecenter/subject/SubjectFragment.java | 286 ++++++++++++++++ .../main/res/drawable-hdpi/platform_vote.jpg | Bin 20104 -> 0 bytes .../main/res/drawable-hdpi/platform_vote.png | Bin 0 -> 10429 bytes .../main/res/drawable/textview_server_tag.xml | 9 + app/src/main/res/layout/activity_subject.xml | 60 ++-- app/src/main/res/layout/activity_suggest.xml | 9 +- app/src/main/res/layout/activity_web.xml | 6 - app/src/main/res/layout/fragment_subject.xml | 39 +++ .../main/res/layout/game_viewpager_item.xml | 9 +- dependencies.gradle | 1 + 22 files changed, 549 insertions(+), 354 deletions(-) create mode 100644 app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.java delete mode 100644 app/src/main/res/drawable-hdpi/platform_vote.jpg create mode 100644 app/src/main/res/drawable-hdpi/platform_vote.png create mode 100644 app/src/main/res/drawable/textview_server_tag.xml create mode 100644 app/src/main/res/layout/fragment_subject.xml 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 67d4347e8d7686aecec911e274b0f01ea2cc9968..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20104 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 literal 0 HcmV?d00001 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"