From 6dd0c75cdce1837d8dcc8dc87f915ead22ff2379 Mon Sep 17 00:00:00 2001 From: huangzhuanghua <401742778@qq.com> Date: Fri, 2 Sep 2016 17:14:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/util/DownloadItemUtils.java | 2 +- .../java/com/gh/common/util/ImageUtils.java | 2 + .../com/gh/common/view/CardLinearLayout.java | 248 +++++++++++++ .../java/com/gh/download/DownloadTask.java | 6 +- .../gamecenter/GameDeatilsNewsActivity.java | 16 +- .../gh/gamecenter/GameDetailsActivity.java | 39 +- .../com/gh/gamecenter/GameNewsActivity.java | 66 ++-- .../java/com/gh/gamecenter/NewsActivity.java | 58 +-- .../com/gh/gamecenter/PluginActivity.java | 1 - .../com/gh/gamecenter/SettingActivity.java | 13 +- .../com/gh/gamecenter/SubjectActivity.java | 1 - .../gamecenter/adapter/GameNewsAdapter.java | 133 +++---- .../adapter/GameNewsTypeListAdapter.java | 40 +- .../gh/gamecenter/adapter/PluginAdapter.java | 20 +- .../gh/gamecenter/adapter/SubjectAdapter.java | 36 +- .../viewholder/GameHeadViewHolder.java | 4 - .../viewholder/GameImageViewHolder.java | 4 - .../viewholder/NewsImage1ViewHolder.java | 2 - .../viewholder/NewsImage2ViewHolder.java | 2 - .../viewholder/NewsImage3ViewHolder.java | 2 - .../viewholder/NewsTextViewHolder.java | 2 + .../gamecenter/download/DownloadAdapter.java | 45 ++- .../gh/gamecenter/download/UpdateAdapter.java | 16 + .../gh/gamecenter/eventbus/EBTypeChange.java | 23 ++ .../gamecenter/game/Game1FragmentAdapter.java | 91 ++--- .../gamecenter/game/Game2FragmentAdapter.java | 102 ++++-- .../com/gh/gamecenter/game/Game3Fragment.java | 10 +- .../gamecenter/game/Game3FragmentAdapter.java | 20 +- .../gamecenter/news/News1FragmentAdapter.java | 86 ++++- .../gamecenter/news/News2FragmentAdapter.java | 73 +++- .../com/gh/gamecenter/news/News3Fragment.java | 53 ++- .../gamecenter/news/News3FragmentAdapter.java | 341 +++++++++++------- .../gamecenter/personal/ConcernFragment.java | 4 +- .../personal/ConcernFragmentAdapter.java | 55 ++- .../gamecenter/personal/InstallFragment.java | 1 - .../personal/InstallFragmentAdapter.java | 25 +- .../gamecenter/personal/PersonalFragment.java | 2 +- .../search/SearchDetailFragmentAdapter.java | 20 +- .../search/SearchGameListFragmentAdapter.java | 175 +++++++-- .../search/SearchHistoryFragmentAdapter.java | 74 ++-- .../search/SearchHistoryViewHolder.java | 2 + .../search/SearchResultListAdapter.java | 2 +- .../main/res/drawable-hdpi/frame_bottom.png | Bin 0 -> 3861 bytes .../main/res/drawable-hdpi/frame_center.png | Bin 0 -> 2261 bytes ...quare.png => frame_left_bottom_square.png} | Bin .../frame_left_top_square.png} | Bin 3671 -> 3045 bytes ...uare.png => frame_right_bottom_square.png} | Bin .../frame_right_top_square.png} | Bin 3723 -> 3059 bytes app/src/main/res/drawable-hdpi/frame_top.png | Bin 2261 -> 3438 bytes .../res/drawable-hdpi/frame_top_no_back.png | Bin 2408 -> 0 bytes .../res/drawable-hdpi/home_plug_upgrade.png | Bin 1008 -> 5075 bytes app/src/main/res/drawable-hdpi/shadow.9.png | Bin 0 -> 105 bytes app/src/main/res/drawable/border.xml | 2 +- app/src/main/res/drawable/news_search_btn.xml | 10 +- .../main/res/layout/activity_essaydetails.xml | 18 +- app/src/main/res/layout/activity_main.xml | 166 +++++---- .../res/layout/activity_new_gamedetails.xml | 17 +- app/src/main/res/layout/activity_plugin.xml | 3 +- app/src/main/res/layout/activity_setting.xml | 4 +- app/src/main/res/layout/activity_subject.xml | 3 +- .../main/res/layout/essaydetails_item_top.xml | 9 +- .../res/layout/fm_downloadmanager_item.xml | 176 +++++---- app/src/main/res/layout/fm_read2_special1.xml | 90 ++--- app/src/main/res/layout/fm_read2_special2.xml | 136 +++---- app/src/main/res/layout/fm_read_item.xml | 70 ++-- .../layout/fm_search_history_delete_item.xml | 54 ++- .../res/layout/fm_search_history_item.xml | 23 +- app/src/main/res/layout/fm_update_item.xml | 112 +++--- app/src/main/res/layout/fragment_news3.xml | 64 ++-- app/src/main/res/layout/fragment_original.xml | 43 +-- .../main/res/layout/game_news_search_item.xml | 8 +- app/src/main/res/layout/game_normal_item.xml | 33 +- app/src/main/res/layout/game_test_item.xml | 37 +- .../main/res/layout/home_game_head_item.xml | 93 +++-- .../main/res/layout/home_game_image_item.xml | 9 +- .../layout/home_list_item_newsimage_type.xml | 12 +- .../layout/home_list_item_newsnormal_type.xml | 68 ++-- .../res/layout/image_card_game_head_item.xml | 6 +- .../image_card_home_game_image_item.xml | 6 +- app/src/main/res/layout/plugin1_fragment.xml | 3 +- app/src/main/res/values/attrs.xml | 8 + app/src/main/res/values/colors.xml | 4 +- app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 4 + 84 files changed, 2020 insertions(+), 1190 deletions(-) create mode 100644 app/src/main/java/com/gh/common/view/CardLinearLayout.java create mode 100644 app/src/main/java/com/gh/gamecenter/eventbus/EBTypeChange.java create mode 100644 app/src/main/res/drawable-hdpi/frame_bottom.png create mode 100644 app/src/main/res/drawable-hdpi/frame_center.png rename app/src/main/res/drawable-hdpi/{frame_left_square.png => frame_left_bottom_square.png} (100%) rename app/src/main/res/{drawable-xhdpi/md_switch_thumb_on_normal.png => drawable-hdpi/frame_left_top_square.png} (73%) rename app/src/main/res/drawable-hdpi/{frame_right_square.png => frame_right_bottom_square.png} (100%) rename app/src/main/res/{drawable-xhdpi/md_switch_thumb_off_normal.png => drawable-hdpi/frame_right_top_square.png} (72%) delete mode 100644 app/src/main/res/drawable-hdpi/frame_top_no_back.png create mode 100644 app/src/main/res/drawable-hdpi/shadow.9.png diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index ea3025f674..786ec70b66 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -324,7 +324,7 @@ public class DownloadItemUtils { } else { download_speed.setText("下载完成"); } - download_percentage.setText("100%"); + download_percentage.setText(R.string.hundred_percent); if (isNormal) { downloadBtn.setText("安装"); diff --git a/app/src/main/java/com/gh/common/util/ImageUtils.java b/app/src/main/java/com/gh/common/util/ImageUtils.java index 479ff6430b..c89272dfc3 100644 --- a/app/src/main/java/com/gh/common/util/ImageUtils.java +++ b/app/src/main/java/com/gh/common/util/ImageUtils.java @@ -103,10 +103,12 @@ public class ImageUtils { public void display(String url, ImageView imageView, int drawable,Context context) { display(url, imageView, drawable, ScaleType.FIT_XY, null ,context); } + // 主页大图布局用到的 public void display(String url, ImageView imageView, int drawable,Context context,RelativeLayout rlImage,int position) { display(url, imageView, drawable, ScaleType.FIT_XY, null ,context, rlImage,position); } + public void display(String url, ImageView imageView, int drawable) { display(url, imageView, drawable, ScaleType.FIT_XY, null); } diff --git a/app/src/main/java/com/gh/common/view/CardLinearLayout.java b/app/src/main/java/com/gh/common/view/CardLinearLayout.java new file mode 100644 index 0000000000..7037b43778 --- /dev/null +++ b/app/src/main/java/com/gh/common/view/CardLinearLayout.java @@ -0,0 +1,248 @@ +package com.gh.common.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.gh.gamecenter.R; + +/** + * Created by LGT on 2016/8/31. + */ +public class CardLinearLayout extends LinearLayout { + + private Drawable leftDrawable, topDrawable, rightDrawable, bottomDrawable, centerDrawable; + private Drawable leftTopDrawable, rightTopDrawable, leftBottomDrawable, rightBottomDrawable; + + private int mLeft, mTop, mRight, mBottom; + + private boolean isBottom; + + public CardLinearLayout(Context context) { + this(context, null); + } + + public CardLinearLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public CardLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context, attrs); + } + + private void init(Context context, AttributeSet attrs) { + isBottom = true; + + leftDrawable = getContext().getResources().getDrawable(R.drawable.frame_left); + topDrawable = getContext().getResources().getDrawable(R.drawable.frame_top); + rightDrawable = getContext().getResources().getDrawable(R.drawable.frame_right); + bottomDrawable = getContext().getResources().getDrawable(R.drawable.frame_bottom); + centerDrawable = getContext().getResources().getDrawable(R.drawable.frame_center); + + leftTopDrawable = getContext().getResources().getDrawable(R.drawable.frame_left_top_square); + rightTopDrawable = getContext().getResources().getDrawable(R.drawable.frame_right_top_square); + leftBottomDrawable = getContext().getResources().getDrawable(R.drawable.frame_left_bottom_square); + rightBottomDrawable = getContext().getResources().getDrawable(R.drawable.frame_right_bottom_square); + + if (attrs != null) { + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CardLayout); + mLeft = ta.getDimensionPixelSize(R.styleable.CardLayout_left, 0); + mTop = ta.getDimensionPixelSize(R.styleable.CardLayout_top, 0); + mRight = ta.getDimensionPixelSize(R.styleable.CardLayout_right, 0); + mBottom = ta.getDimensionPixelSize(R.styleable.CardLayout_bottom, 0); + ta.recycle(); + } + setPadding(getPaddingLeft() + mLeft, getPaddingTop() + mTop, getPaddingRight() + mRight, getPaddingBottom() + mBottom); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + if (mLeft != 0 && mTop != 0 && mRight != 0 && mBottom != 0) { + // 左、上、右、下 + if (leftTopDrawable != null) { + leftTopDrawable.setBounds(0, 0, mLeft, mTop); + leftTopDrawable.draw(canvas); + } + + if (topDrawable != null) { + topDrawable.setBounds(mLeft, 0, getWidth() - mRight, mTop); + topDrawable.draw(canvas); + } + + if (rightTopDrawable != null) { + rightTopDrawable.setBounds(getWidth() - mRight, 0, getWidth(), mTop); + rightTopDrawable.draw(canvas); + } + + if (leftDrawable != null) { + leftDrawable.setBounds(0, mTop, mLeft, getHeight() - mBottom); + leftDrawable.draw(canvas); + } + + if (rightDrawable != null) { + rightDrawable.setBounds(getWidth() - mRight, mTop, getWidth(), getHeight() - mBottom); + rightDrawable.draw(canvas); + } + + if (leftBottomDrawable != null) { + leftBottomDrawable.setBounds(0, getHeight() - mBottom, mLeft, getHeight()); + leftBottomDrawable.draw(canvas); + } + + if (isBottom) { + if (bottomDrawable != null) { + bottomDrawable.setBounds(mLeft, getHeight() - mBottom, getWidth() - mRight, getHeight()); + bottomDrawable.draw(canvas); + } + } else { + if (centerDrawable != null) { + centerDrawable.setBounds(mLeft, getHeight() - mBottom, getWidth() - mRight, getHeight()); + centerDrawable.draw(canvas); + } + } + + if (rightBottomDrawable != null) { + rightBottomDrawable.setBounds(getWidth() - mRight, getHeight() - mBottom, getWidth(), getHeight()); + rightBottomDrawable.draw(canvas); + } + + } else if (mLeft != 0 && mTop != 0 && mRight != 0) { + // 左、上、右 + if (leftTopDrawable != null) { + leftTopDrawable.setBounds(0, 0, mLeft, mTop); + leftTopDrawable.draw(canvas); + } + + if (topDrawable != null) { + topDrawable.setBounds(mLeft, 0, getWidth() - mRight, mTop); + topDrawable.draw(canvas); + } + + if (rightTopDrawable != null) { + rightTopDrawable.setBounds(getWidth() - mRight, 0, getWidth(), mTop); + rightTopDrawable.draw(canvas); + } + + if (leftDrawable != null) { + leftDrawable.setBounds(0, mTop, mLeft, getHeight()); + leftDrawable.draw(canvas); + } + + if (rightDrawable != null) { + rightDrawable.setBounds(getWidth() - mRight, mTop, getWidth(), getHeight()); + rightDrawable.draw(canvas); + } + + } else if (mLeft != 0 && mBottom != 0 && mRight != 0) { + // 左、下、右 + if (leftDrawable != null) { + leftDrawable.setBounds(0, 0, mLeft, getHeight() - mBottom); + leftDrawable.draw(canvas); + } + + if (rightDrawable != null) { + rightDrawable.setBounds(getWidth() - mRight, 0, getWidth(), getHeight() - mBottom); + rightDrawable.draw(canvas); + } + + if (leftBottomDrawable != null) { + leftBottomDrawable.setBounds(0, getHeight() - mBottom, mLeft, getHeight()); + leftBottomDrawable.draw(canvas); + } + + if (isBottom) { + if (bottomDrawable != null) { + bottomDrawable.setBounds(mLeft, getHeight() - mBottom, getWidth() - mRight, getHeight()); + bottomDrawable.draw(canvas); + } + } else { + if (centerDrawable != null) { + centerDrawable.setBounds(mLeft, getHeight() - mBottom, getWidth() - mRight, getHeight()); + centerDrawable.draw(canvas); + } + } + + if (rightBottomDrawable != null) { + rightBottomDrawable.setBounds(getWidth() - mRight, getHeight() - mBottom, getWidth(), getHeight()); + rightBottomDrawable.draw(canvas); + } + + } else if (mLeft != 0 && mRight != 0) { + // 左、右 + if (leftDrawable != null) { + leftDrawable.setBounds(0, 0, mLeft, getHeight()); + leftDrawable.draw(canvas); + } + + if (rightDrawable != null) { + rightDrawable.setBounds(getWidth() - mRight, 0, getWidth(), getHeight()); + rightDrawable.draw(canvas); + } + } + + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int newHeight = MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(heightMeasureSpec) + mTop + mBottom, + MeasureSpec.getMode(heightMeasureSpec)); + super.onMeasure(widthMeasureSpec, newHeight); + } + + public void setBottom(boolean bottom) { + isBottom = bottom; + } + + public void setShadow(int left, int top, int right, int bottom) { + setPadding(getPaddingLeft() - mLeft + left, + getPaddingTop() - mTop + top, + getPaddingRight() - mRight + right, + getPaddingBottom() - mBottom + bottom); + this.mLeft = left; + this.mTop = top; + this.mRight = right; + this.mBottom = bottom; + } + + public void setmLeft(int left) { + setPadding(getPaddingLeft() - mLeft + left, getPaddingTop(), getPaddingRight(), getPaddingBottom()); + this.mLeft = left; + } + + public void setmTop(int top) { + setPadding(getPaddingLeft(), getPaddingTop() - mTop + top, getPaddingRight(), getPaddingBottom()); + this.mTop = top; + } + + public void setmRight(int right) { + setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight() - mRight + right, getPaddingBottom()); + this.mRight = right; + } + + public void setmBottom(int bottom) { + setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), getPaddingBottom() - mBottom + bottom); + this.mBottom = bottom; + } + + public int getmLeft() { + return mLeft; + } + + public int getmTop() { + return mTop; + } + + public int getmRight() { + return mRight; + } + + public int getmBottom() { + return mBottom; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/DownloadTask.java b/app/src/main/java/com/gh/download/DownloadTask.java index 451bf3aa8a..27085f6f8a 100644 --- a/app/src/main/java/com/gh/download/DownloadTask.java +++ b/app/src/main/java/com/gh/download/DownloadTask.java @@ -82,7 +82,11 @@ public class DownloadTask implements DownloadListener { percent = Double.parseDouble(df.format(percent)); } entry.setProgress(currSize); - entry.setPercent(percent); + if (percent == 100.0d) { + entry.setPercent(100); + } else { + entry.setPercent(percent); + } if (percent > currPercent) { currPercent = percent; diff --git a/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java index c313ad508b..f23c1a1cc9 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDeatilsNewsActivity.java @@ -104,7 +104,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ new Thread(new Runnable() { @Override public void run() { - LoadNewsData(page); + loadNewsData(page); } }).start(); @@ -130,7 +130,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ if (newState == RecyclerView.SCROLL_STATE_IDLE &&layoutManager.findLastVisibleItemPosition() + 1 == newsAdapter.getItemCount()&&isLoadOver&&!isRemove){ isLoadOver = false; page++; - LoadNewsData(page); + loadNewsData(page); } } }); @@ -144,7 +144,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ handler.postDelayed(new Runnable() { @Override public void run() { - LoadNewsData(1); + loadNewsData(1); } },1000); } @@ -222,7 +222,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ public void run() { page = 1; isRemove = false; - LoadNewsData(page); + loadNewsData(page); } }).start(); } @@ -236,7 +236,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ } - private void LoadNewsData(final int page) { + private void loadNewsData(final int page) { String url = null; if (newsType == null || "全部".equals(newsType)){ @@ -324,7 +324,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.refresh_footerview, parent, false); return new FooterViewHolder(view); - }else { + } else { TextView textView = new TextView(getApplicationContext()); textView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); textView.setPadding(DisplayUtils.dip2px(GameDeatilsNewsActivity.this,10),DisplayUtils.dip2px(GameDeatilsNewsActivity.this,10),0,DisplayUtils.dip2px(GameDeatilsNewsActivity.this,10)); @@ -348,7 +348,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ startActivity(intent); } }); - }else if (holder instanceof FooterViewHolder){ + } else if (holder instanceof FooterViewHolder){ FooterViewHolder viewHolder = (FooterViewHolder) holder; if (isNetworkError) { viewHolder.footerview_progressbar.setVisibility(View.GONE); @@ -359,7 +359,7 @@ public class GameDeatilsNewsActivity extends BaseActivity{ public void onClick(View v) { isNetworkError = false; notifyItemChanged(getItemCount() - 1); - LoadNewsData(page); + loadNewsData(page); } }); } else if (isRemove) { diff --git a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java index bae98fe5ec..1fd993a91d 100644 --- a/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameDetailsActivity.java @@ -34,6 +34,7 @@ import com.gh.common.constant.Constants; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataUtils; import com.gh.common.util.DialogUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.FileUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.MD5Utils; @@ -124,16 +125,19 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + View contentView = View.inflate(this, R.layout.activity_new_gamedetails, null); + RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar); iv_share = new ImageView(this); iv_share.setImageResource(R.drawable.share_icon); - float dp = getResources().getDisplayMetrics().density; - RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int)(dp*20),(int)(dp*20)); + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( + DisplayUtils.dip2px(this, 20), DisplayUtils.dip2px(this, 20)); params.addRule( RelativeLayout.CENTER_VERTICAL); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT ); - params.setMargins(0,0,(int)(dp*10),0); + params.setMargins(0, 0, DisplayUtils.dip2px(this, 10), 0); reuse_actionbar.addView(iv_share,params); + gameId = getIntent().getStringExtra("gameId"); entrance = getIntent().getStringExtra("entrance"); if (gameId != null) { @@ -143,7 +147,12 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis gameId = gameEntity.getId(); } - init(contentView,gameEntity.getName()); + if (gameEntity != null && gameEntity.getName() != null) { + init(contentView, gameEntity.getName()); + } else { + init(contentView, ""); + } + dismissEntity = new DismissEntity(false); statusMap = new ArrayMap<>(); @@ -308,8 +317,7 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis private void initDowload() { if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { tvDowload.setText("暂无下载"); - tvDowload - .setBackgroundResource(R.drawable.textview_gray_style); + tvDowload.setBackgroundResource(R.drawable.textview_gray_style); tvDowload.setTextColor(0xFF999999); tvDowload.setClickable(false); } else { @@ -634,23 +642,21 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis getGameDetail(); getGameNews(); } + @Override public int getItemViewType(int position){ if (position == 0){ - return 0; - } - else if (entity.getTag()!=null && entity.getTag().size()>0&&position == 1){ + } else if (entity.getTag() != null && entity.getTag().size() > 0 && position == 1) { return 1; - }else if (entity.getNews()!=null && entity.getNews().size()>0&&(position == 1||entity.getTag()!=null&&entity.getTag().size()>0&&position == 2)){ + } else if (entity.getNews() != null && entity.getNews().size() > 0 + && (position == 1 || entity.getTag() != null && entity.getTag().size() > 0 && position == 2)) { return 2; - }else if (entity.getGallery()!=null && entity.getGallery().size()>0){ + } else if (entity.getGallery() != null && entity.getGallery().size() > 0) { return 3; - } - else { + } else { return super.getItemViewType(position); } - } @Override @@ -697,7 +703,6 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis gameViewHolder.gamepic_rv.addItemDecoration(new HorizontalItemDecoration( context, 1, entity.getGallery().size())); gameViewHolder.game_content.setText(entity.getDes()); - } private void initZiXunViewHolder(ZiXunViewHolder ziXunViewHolder) { @@ -744,7 +749,6 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis } private void initPluginViewHolder(PluginViewHolder pluginViewHolder) { - LinearLayout llContainer = pluginViewHolder.llContainer; int childCount = llContainer.getChildCount(); if (childCount == 0){ @@ -772,8 +776,7 @@ public class GameDetailsActivity extends BaseActivity implements View.OnClickLis topViewHolder.tv_name.setText(gameEntity.getName()); ImageUtils.getInstance(context).display(gameEntity.getIcon(),topViewHolder.iv_game); ApkEntity apkEntity = gameEntity.getApk().get(0); - topViewHolder.tv_info.setText("V" + apkEntity.getVersion() + " | " - + apkEntity.getSize()); + topViewHolder.tv_info.setText("V" + apkEntity.getVersion() + " | " + apkEntity.getSize()); topViewHolder.tv_concern.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java index 972337a7ac..d979bca62a 100644 --- a/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/GameNewsActivity.java @@ -1,6 +1,7 @@ package com.gh.gamecenter; import android.os.Bundle; +import android.support.v4.util.ArrayMap; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -14,6 +15,7 @@ import com.gh.base.BaseActivity; import com.gh.common.util.DisplayUtils; import com.gh.gamecenter.adapter.GameNewsAdapter; import com.gh.gamecenter.adapter.GameNewsTypeListAdapter; +import com.gh.gamecenter.eventbus.EBTypeChange; import java.util.ArrayList; @@ -22,17 +24,23 @@ import java.util.ArrayList; */ public class GameNewsActivity extends BaseActivity implements View.OnClickListener{ - private static GameNewsAdapter adapter; - private static GameNewsTypeListAdapter typeListAdapter; + private GameNewsAdapter adapter; + private GameNewsTypeListAdapter typeListAdapter; private RecyclerView game_news_list; private RecyclerView game_news_top_type_list; private LinearLayoutManager layoutManager; private ImageView ivSearch; - private boolean isDestroy; + private ArrayMap adapterMap; - public static int selectedPosition = 0; //新闻类型选中位置 + private ArrayList typeList; + + private String gameId; + + private float startY = 0; + + private boolean isDestroy; @Override protected void onCreate(Bundle savedInstanceState) { @@ -52,26 +60,31 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen ivSearchParams.setMargins(0, 0, DisplayUtils.dip2px(this, 10), 0); RelativeLayout reuse_actionbar = (RelativeLayout) contentView.findViewById(R.id.reuse_actionbar); - reuse_actionbar.addView(ivSearch,ivSearchParams); + reuse_actionbar.addView(ivSearch, ivSearchParams); ivSearch.setOnClickListener(this); + ivSearch.setVisibility(View.GONE); String gameName = getIntent().getStringExtra("gameName"); init(contentView, gameName); - final ArrayList typeList = getIntent().getStringArrayListExtra("articleTypes"); + adapterMap = new ArrayMap<>(); + + typeList = getIntent().getStringArrayListExtra("articleTypes"); typeList.add(0, "全部"); - String gameId = getIntent().getStringExtra("gameId"); + gameId = getIntent().getStringExtra("gameId"); game_news_list.setHasFixedSize(true); layoutManager = new LinearLayoutManager(this); game_news_list.setLayoutManager(layoutManager); - adapter = new GameNewsAdapter(this, typeList, gameId, game_news_top_type_list,game_news_list); + adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, "全部"); + adapterMap.put("全部", adapter); game_news_list.setAdapter(adapter); game_news_list.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); + if (layoutManager.findFirstVisibleItemPosition() >= 1) { game_news_top_type_list.setVisibility(View.VISIBLE); ivSearch.setVisibility(View.VISIBLE); @@ -86,7 +99,7 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (!isDestroy && newState == RecyclerView.SCROLL_STATE_IDLE - && layoutManager.findLastVisibleItemPosition() == 3) { + && layoutManager.findLastVisibleItemPosition() == adapter.getItemCount() - 1) { if (!adapter.isRemove() && !adapter.isLoading() && !adapter.isNetworkError()) { adapter.addList(adapter.getNewsList().size()); } @@ -96,37 +109,39 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen game_news_top_type_list.setHasFixedSize(true); game_news_top_type_list.setLayoutManager(new GridLayoutManager(this, 5)); - typeListAdapter = new GameNewsTypeListAdapter(this, typeList); + typeListAdapter = new GameNewsTypeListAdapter(typeList, "全部"); game_news_top_type_list.setAdapter(typeListAdapter); ViewGroup.LayoutParams params = game_news_top_type_list.getLayoutParams(); params.height = (int) Math.ceil(typeList.size() / 5f) * DisplayUtils.dip2px(this, 37); game_news_top_type_list.setLayoutParams(params); + //禁止由于滑动出现的阴影 game_news_top_type_list.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { - float Y1 = 0; - float Y2; - switch (event.getAction()){ - case MotionEvent.ACTION_DOWN: - Y1 = event.getY(); - break; - case MotionEvent.ACTION_MOVE: - Y2 = event.getY(); - if (Math.abs(Y1 - Y2)>0){ - return true; - } - break; + if (event.getAction() == MotionEvent.ACTION_DOWN) { + startY = event.getY(); + } else if (event.getAction() == MotionEvent.ACTION_DOWN) { + if (Math.abs(startY - event.getY()) > 0) { + return true; + } } return false; } }); } - public static void notifyTypeItem(String type){ - adapter.notifyDataTypeAdapter(type); - typeListAdapter.notifyDataSetChanged(); + public void onEventMainThread(EBTypeChange change) { + adapter = adapterMap.get(change.getType()); + if (adapter == null) { + adapter = new GameNewsAdapter(this, typeList, game_news_list, gameId, change.getType()); + adapterMap.put(change.getType(), adapter); + } + game_news_list.setAdapter(adapter); + + game_news_top_type_list.setVisibility(View.GONE); + typeListAdapter.setNewsType(change.getType(), change.getPosition()); } @Override @@ -135,7 +150,6 @@ public class GameNewsActivity extends BaseActivity implements View.OnClickListen isDestroy = true; adapter = null; typeListAdapter = null; - selectedPosition = 0; } @Override diff --git a/app/src/main/java/com/gh/gamecenter/NewsActivity.java b/app/src/main/java/com/gh/gamecenter/NewsActivity.java index 98453503ab..cfa349e792 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsActivity.java @@ -153,11 +153,9 @@ public class NewsActivity extends BaseActivity implements OnClickListener { HashMap downloadingEntries) { if (gameEntity != null && gameEntity.getApk().size() == 1) { String url = gameEntity.getApk().get(0).getUrl(); - for (Map.Entry entry : downloadingEntries - .entrySet()) { + for (Map.Entry entry : downloadingEntries.entrySet()) { if (url.equals(entry.getValue().getUrl())) { - if (!"pause".equals(statusMap.get(entry.getValue() - .getUrl()))) { + if (!"pause".equals(statusMap.get(entry.getValue().getUrl()))) { downloadEntry = entry.getValue(); invalidate(); } @@ -999,18 +997,11 @@ public class NewsActivity extends BaseActivity implements OnClickListener { public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view; if (viewType == 0) { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.essaydetails_item_top, parent, false); - } else if (viewType == 1) { - view = LayoutInflater.from(parent.getContext()).inflate(R.layout.essaydetails_more_news_item, parent, false); + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.essaydetails_item_top, parent, false); } else { - RelativeLayout relativeLayout = new RelativeLayout(NewsActivity.this); - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( - LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(getApplicationContext(), 48)); - if (!Config.isShow) { - params.height = 0; - } - relativeLayout.setLayoutParams(params); - view = relativeLayout; + view = LayoutInflater.from(parent.getContext()).inflate( + R.layout.essaydetails_more_news_item, parent, false); } return new NewsViewHolder(view, viewType); } @@ -1018,7 +1009,7 @@ public class NewsActivity extends BaseActivity implements OnClickListener { @Override public void onBindViewHolder(NewsViewHolder holder, int position) { if (position == 0) { - if (gameEntity != null && !gameEntity.getName().contains("光环助手")) { + if (gameEntity != null && gameEntity.getName() != null && !gameEntity.getName().contains("光环助手")) { holder.essaydetails_ll_top.setVisibility(View.VISIBLE); holder.cardView.setVisibility(View.VISIBLE); ImageUtils.getInstance(getApplicationContext()).displayFile(gameEntity.getIcon(), holder.essaydetails_icon); @@ -1116,10 +1107,8 @@ public class NewsActivity extends BaseActivity implements OnClickListener { } } else if (entity.getMore() != null && position == 1) { - - LinearLayout news_item_ll = holder.news_item_ll; - for (int i = 0;i=1){ - return 3; + if (entity.getMore() != null && entity.getMore().size() >= 1){ + return 2; } - return 2; + return 1; } @Override public int getItemViewType(int position) { - if (position == 0) { - return 0; - } else if(entity.getMore() != null && entity.getMore().size()>=1 && position == 1){ - return 1; - } - else { - return 5; - } + return position; } } @@ -1201,14 +1173,12 @@ public class NewsActivity extends BaseActivity implements OnClickListener { essaydetails_tv_download.setVisibility(View.VISIBLE); essaydetails_progressbar.setVisibility(View.GONE); essaydetails_tv_per.setVisibility(View.GONE); - essaydetails_tv_download.setText("启动《" - + gameEntity.getName() + "》"); + essaydetails_tv_download.setText("启动《" + gameEntity.getName() + "》"); } else if ("卸载".equals(busFour.getType())) { essaydetails_tv_download.setVisibility(View.VISIBLE); essaydetails_progressbar.setVisibility(View.GONE); essaydetails_tv_per.setVisibility(View.GONE); - essaydetails_tv_download.setText("下载《" - + gameEntity.getName() + "》"); + essaydetails_tv_download.setText("下载《" + gameEntity.getName() + "》"); } } } diff --git a/app/src/main/java/com/gh/gamecenter/PluginActivity.java b/app/src/main/java/com/gh/gamecenter/PluginActivity.java index c4202899cb..358c8bee23 100644 --- a/app/src/main/java/com/gh/gamecenter/PluginActivity.java +++ b/app/src/main/java/com/gh/gamecenter/PluginActivity.java @@ -111,7 +111,6 @@ public class PluginActivity extends BaseActivity { plugin_list.setLayoutManager(new LinearLayoutManager(this)); adapter = new PluginAdapter(this, plugin_list, plugin_pb_loading, reuse_no_connection); plugin_list.setAdapter(adapter); - plugin_list.addItemDecoration(new VerticalItemDecoration(this, 1)); } diff --git a/app/src/main/java/com/gh/gamecenter/SettingActivity.java b/app/src/main/java/com/gh/gamecenter/SettingActivity.java index 55115b424d..155969f284 100644 --- a/app/src/main/java/com/gh/gamecenter/SettingActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SettingActivity.java @@ -84,14 +84,11 @@ public class SettingActivity extends BaseActivity implements OnClickListener { for (Entry entry : downloads.entrySet()) { DownloadEntry downloadEntry = entry.getValue(); if (downloadEntry.getName().contains("光环助手") && isShowDownload) { - app_tv_speed.setText(SpeedUtils.getSpeed(downloadEntry - .getSpeed()) - + "(剩" - + SpeedUtils.getRemainTime(downloadEntry.getSize(), - downloadEntry.getProgress(), - downloadEntry.getSpeed() * 1024) + ")"); - app_pb_progress.setProgress((int) (downloadEntry - .getPercent() * 10)); + app_tv_speed.setText(String.format("%s(剩%s)", + SpeedUtils.getSpeed(downloadEntry.getSpeed()), + SpeedUtils.getRemainTime(downloadEntry.getSize(), downloadEntry.getProgress(), + downloadEntry.getSpeed() * 1024))); + app_pb_progress.setProgress((int) (downloadEntry.getPercent() * 10)); app_tv_percent.setText(downloadEntry.getPercent() + "%"); if (DownloadStatus.done.equals(downloadEntry.getStatus())) { DownloadManager.getInstance(getApplicationContext()) diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java index 73c0eed460..9cf77e46d8 100644 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java @@ -124,7 +124,6 @@ public class SubjectActivity extends BaseActivity { subject_list.setLayoutManager(layoutManager); adapter = new SubjectAdapter(this, subject_list, subject_pb_loading, reuse_no_connection, id,order); subject_list.setAdapter(adapter); - subject_list.addItemDecoration(new VerticalItemDecoration(this, 1)); subject_list.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java index d0fe4fc75b..c94acce9bd 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsAdapter.java @@ -4,7 +4,6 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; @@ -15,17 +14,19 @@ import com.android.volley.Response; import com.android.volley.VolleyError; import com.gh.base.AppController; import com.gh.common.constant.Config; +import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; -import com.gh.common.view.VerticalItemDecoration; +import com.gh.common.util.NewsUtils; +import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.GameNewsActivity; import com.gh.gamecenter.NewsSearchActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.CardListViewHolder; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNewsSearchViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNewsTypeListViewHolder; +import com.gh.gamecenter.adapter.viewholder.NewsTextViewHolder; import com.gh.gamecenter.entity.NewsEntity; -import com.gh.gamecenter.news.NewsListAdapter; +import com.gh.gamecenter.manager.DataCollectionManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -34,7 +35,9 @@ import org.json.JSONArray; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Created by LGT on 2016/8/29. @@ -42,38 +45,32 @@ import java.util.List; public class GameNewsAdapter extends RecyclerView.Adapter { private Context context; - private RecyclerView game_news_top_type_list; private RecyclerView game_news_list; - private GameNewsTypeListAdapter typeListAdapter; - private NewsListAdapter newsListAdapter; - private ArrayList newsList; private ArrayList typeList; private String gameId; private String newsType; - private int listsize; - private boolean isLoading; private boolean isRemove; private boolean isNetworkError; - - public GameNewsAdapter(Context context, ArrayList tList, String id, RecyclerView game_news_top_type_list, RecyclerView game_news_list) { + public GameNewsAdapter(Context context, + ArrayList tList, + RecyclerView game_news_list, + String id, + String type) { this.context = context; - this.game_news_top_type_list = game_news_top_type_list; this.game_news_list = game_news_list; newsList = new ArrayList<>(); typeList = tList; gameId = id; - newsType = "全部"; - - listsize = 0; + newsType = type; isLoading = false; isRemove = false; @@ -109,17 +106,14 @@ public class GameNewsAdapter extends RecyclerView.Adapter { if (list != null && list.size() != 0) { newsList.addAll(list); if (offset == 0) { - if (newsListAdapter != null){ - newsListAdapter.notifyDataSetChanged(); - } game_news_list.scrollToPosition(1); - notifyDataSetChanged(); - } else { - notifyItemChanged(2); } - if (list.size()<20){ + notifyItemChanged(getItemCount() - list.size() - 2); + notifyItemRangeInserted(newsList.size() - list.size() + 2, list.size()); + + if (list.size() < 20) { isRemove = true; - notifyItemChanged(3); + notifyItemChanged(getItemCount() - 1); } } @@ -146,10 +140,10 @@ public class GameNewsAdapter extends RecyclerView.Adapter { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.game_news_type_item, parent, false); return new GameNewsTypeListViewHolder(view); - } else if (viewType == 2) { + } else if (newsList.size() > 0 && viewType > 1 && viewType <= 1 + newsList.size()) { View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.reuse_card_list, parent, false); - return new CardListViewHolder(view); + R.layout.home_list_item_newsnormal_type, parent, false); + return new NewsTextViewHolder(view); } else { View view = LayoutInflater.from(parent.getContext()).inflate( R.layout.refresh_footerview, parent, false); @@ -168,33 +162,54 @@ public class GameNewsAdapter extends RecyclerView.Adapter { if (viewHolder.game_news_type_list.getAdapter() == null) { viewHolder.game_news_type_list.setHasFixedSize(true); viewHolder.game_news_type_list.setLayoutManager(new GridLayoutManager(context, 5)); - typeListAdapter = new GameNewsTypeListAdapter(context, typeList); - viewHolder.game_news_type_list.setAdapter(typeListAdapter); + viewHolder.game_news_type_list.setAdapter(new GameNewsTypeListAdapter(typeList, newsType)); } - } else if (holder instanceof CardListViewHolder) { - CardListViewHolder viewHolder = (CardListViewHolder) holder; - int height = DisplayUtils.dip2px(context, 37) * newsList.size() - + DisplayUtils.dip2px(context, 1) * (newsList.size() - 1); - ViewGroup.LayoutParams params = viewHolder.card_list_show.getLayoutParams(); - params.height = height; - viewHolder.card_list_show.setLayoutParams(params); - //解决悬挂的typeList,由于新闻条目过少造成的BUG - if (newsList.size()<14){ - game_news_top_type_list.setVisibility(View.GONE); - } - if (viewHolder.card_list_show.getAdapter() == null) { - viewHolder.card_list_show.setHasFixedSize(true); - viewHolder.card_list_show.setLayoutManager(new LinearLayoutManager(context)); - newsListAdapter = new NewsListAdapter(context, newsList, "游戏新闻"); - viewHolder.card_list_show.setAdapter(newsListAdapter); - viewHolder.card_list_show.addItemDecoration(new VerticalItemDecoration(context, 1)); - listsize = newsList.size(); + } else if (holder instanceof NewsTextViewHolder) { + NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; + + // 第一个 + if (position - 2 == 0) { + viewHolder.news_line.setVisibility(View.GONE); + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); } else { - viewHolder.card_list_show.getAdapter().notifyItemRangeInserted( - listsize + 1, newsList.size() - listsize); - listsize = newsList.size(); + viewHolder.news_line.setVisibility(View.VISIBLE); + ((CardLinearLayout) holder.itemView).setmTop(0); } - }else if (holder instanceof FooterViewHolder){ + + // 最后一个 + if (position - 1 == newsList.size()) { + ((CardLinearLayout) viewHolder.itemView).setBottom(true); + ((CardLinearLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) viewHolder.itemView).setBottom(false); + ((CardLinearLayout) viewHolder.itemView).setmBottom(0); + } + + final NewsEntity newsEntity = newsList.get(position - 2); + viewHolder.newsType.setBackgroundResource(NewsUtils.getDrawableIdByType(newsEntity.getType())); + viewHolder.newsType.setText(newsEntity.getType()); + viewHolder.newsTitle.setText(newsEntity.getTitle()); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("文章类型", newsEntity.getType()); + kv.put("入口", "游戏详情"); + DataUtils.onEvent(context, "资讯-攻略", newsEntity.getTitle(), kv); + + Map map = new HashMap<>(); + map.put("location", "游戏详情"); + map.put("createOn", System.currentTimeMillis() / 1000); + map.put("news", newsEntity.getTitle()); + map.put("page", "攻略"); + DataCollectionManager.onEvent(context, "click-item", map); + + //统计阅读量 + NewsUtils.statNewsViews(newsEntity.getId()); + NewsUtils.startNewsActivity(context, newsEntity, "资讯-攻略"); + } + }); + } else if (holder instanceof FooterViewHolder){ FooterViewHolder footerViewHolder = ((FooterViewHolder) holder); if (isRemove){ footerViewHolder.footerview_tv_loading.setText("加载完毕"); @@ -203,13 +218,13 @@ public class GameNewsAdapter extends RecyclerView.Adapter { footerViewHolder.footerview_tv_loading.setText("加载中..."); footerViewHolder.footerview_progressbar.setVisibility(View.VISIBLE); } - }else if (holder instanceof GameNewsSearchViewHolder){ + } else if (holder instanceof GameNewsSearchViewHolder){ GameNewsSearchViewHolder searchViewHolder = ((GameNewsSearchViewHolder) holder); searchViewHolder.game_news_tv_search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String searchKey = ((GameNewsSearchViewHolder) holder).game_news_et_search.getText().toString().trim(); - if (searchKey.length()>=1){ + if (searchKey.length() >= 1) { Intent intent = new Intent(context,NewsSearchActivity.class); intent.putExtra("gameName","搜索结果"); intent.putExtra("searchKey",searchKey); @@ -225,10 +240,7 @@ public class GameNewsAdapter extends RecyclerView.Adapter { @Override public int getItemCount() { - if (newsList.isEmpty()) { - return 0; - } - return 4; + return 3 + newsList.size(); } @Override @@ -252,11 +264,4 @@ public class GameNewsAdapter extends RecyclerView.Adapter { return isNetworkError; } - public void notifyDataTypeAdapter(String type){ - typeListAdapter.notifyDataSetChanged(); - newsType = type; - isRemove = false; - addList(0); - } - } diff --git a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java index 40fd33fd50..c43679bbfc 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/GameNewsTypeListAdapter.java @@ -1,6 +1,5 @@ package com.gh.gamecenter.adapter; -import android.content.Context; import android.graphics.Color; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; @@ -9,25 +8,31 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import com.gh.gamecenter.GameNewsActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.GameNewsTypeViewHolder; +import com.gh.gamecenter.eventbus.EBTypeChange; import java.util.ArrayList; +import de.greenrobot.event.EventBus; + /** * Created by LGT on 2016/8/29. */ public class GameNewsTypeListAdapter extends RecyclerView.Adapter { - private Context context; - private ArrayList typeList; - public GameNewsTypeListAdapter(Context context, ArrayList tList) { - this.context = context; + private String newsType; + + private int currentPosition; + + public GameNewsTypeListAdapter(ArrayList tList, String type) { typeList = tList; + + newsType = type; + currentPosition = 0; } // 绘图圆角带填充色 @@ -46,9 +51,9 @@ public class GameNewsTypeListAdapter extends RecyclerView.Adapter @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_game_normal_item, parent, false); + R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); } @@ -212,6 +214,20 @@ public class PluginAdapter extends RecyclerView.Adapter if (holder instanceof GameNormalViewHolder) { GameNormalViewHolder viewHolder = (GameNormalViewHolder) holder; + // 第一个 + if (position == 0) { + ((CardLinearLayout) viewHolder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) viewHolder.itemView).setmTop(0); + } + + // 最后一个 + if (position == pluginList.size() - 1) { + ((CardLinearLayout) viewHolder.itemView).setBottom(true); + } else { + ((CardLinearLayout) viewHolder.itemView).setBottom(false); + } + final GameEntity entity = pluginList.get(position); viewHolder.home1_game_order.setVisibility(View.GONE); @@ -225,7 +241,7 @@ public class PluginAdapter extends RecyclerView.Adapter if (entity.getApk() == null || entity.getApk().isEmpty()) { viewHolder.gameDes.setText(entity.getBrief()); } else { - viewHolder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief()); + viewHolder.gameDes.setText(entity.getApk().get(0).getSize() + " " + entity.getBrief()); } GameViewUtils.setLabelList(context, viewHolder.labelList, entity.getTag()); 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 c34a068cd0..a6802de5a9 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/SubjectAdapter.java @@ -19,10 +19,12 @@ import com.gh.base.AppController; import com.gh.common.constant.Config; import com.gh.common.constant.Constants; import com.gh.common.util.DataUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.TimestampUtils; +import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadEntry; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.R; @@ -212,11 +214,11 @@ public class SubjectAdapter extends RecyclerView.Adapter 0 && position <= doneList.size()) { entry = doneList.get(position - 1); + + // 第一个 + if (position == 1) { + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) holder.itemView).setmTop(0); + } + + // 最后一个 + if (position == doneList.size()) { + ((CardLinearLayout) holder.itemView).setBottom(true); + } else { + ((CardLinearLayout) holder.itemView).setBottom(false); + } } else if (doneList.isEmpty()) { entry = downloadingList.get(position - 1); + // 第一个 + if (position == 1) { + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) holder.itemView).setmTop(0); + } + + // 最后一个 + if (position == downloadingList.size()) { + ((CardLinearLayout) holder.itemView).setBottom(true); + } else { + ((CardLinearLayout) holder.itemView).setBottom(false); + } } else { entry = downloadingList.get(position - doneList.size() - 2); + + // 第一个 + if (position == 1) { + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) holder.itemView).setmTop(0); + } + + // 最后一个 + if (position - doneList.size() - 1 == downloadingList.size()) { + ((CardLinearLayout) holder.itemView).setBottom(true); + } else { + ((CardLinearLayout) holder.itemView).setBottom(false); + } } String icon = entry.getMeta().get("icon"); @@ -142,7 +185,7 @@ public class DownloadAdapter extends RecyclerView.Adapter final GameUpdateEntity updateEntity = updateList.get(position - 1); + // 第一个 + if (position == 1) { + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) holder.itemView).setmTop(0); + } + + // 最后一个 + if (position == updateList.size()) { + ((CardLinearLayout) holder.itemView).setBottom(true); + } else { + ((CardLinearLayout) holder.itemView).setBottom(false); + } + if (updateEntity.getName().contains("光环助手")) { viewHolder.gu_item_iv_icon.setImageResource(R.drawable.logo); } else { diff --git a/app/src/main/java/com/gh/gamecenter/eventbus/EBTypeChange.java b/app/src/main/java/com/gh/gamecenter/eventbus/EBTypeChange.java new file mode 100644 index 0000000000..2d6914037e --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/eventbus/EBTypeChange.java @@ -0,0 +1,23 @@ +package com.gh.gamecenter.eventbus; + +/** + * Created by LGT on 2016/9/2. + */ +public class EBTypeChange { + + private String type; + + private int position; + + public EBTypeChange(String type, int position) { + this.type = type; + } + + public String getType() { + return type; + } + + public int getPosition() { + return position; + } +} diff --git a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java index 22a3ff06fe..9f0937104b 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game1FragmentAdapter.java @@ -32,7 +32,9 @@ import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.PlatformUtils; import com.gh.common.util.TimestampUtils; +import com.gh.common.util.Utils; import com.gh.common.view.AutoScrollViewPager; +import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadEntry; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.NewsActivity; @@ -527,11 +529,11 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", i + 1); DataUtils.onEvent(context, "点击", "游戏-插件-" + name, kv); @@ -705,7 +707,11 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter 1 && position <= 1 + pluginList.size()) { gameEntity = pluginList.get(position - 2); - initGameNormal(holder, gameEntity, position - 2, false, "插件化"); + SubjectEntity subjectEntity = new SubjectEntity(); + subjectEntity.setOrder(false); + subjectEntity.setName("插件化"); + subjectEntity.setData(pluginList); + initGameNormal(holder, gameEntity, position - 2, subjectEntity); return; } @@ -725,7 +731,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", entity.getName()); kv.put("位置", i + 1); - DataUtils.onEvent(context, "点击", "游戏-插件-" + name, kv); + DataUtils.onEvent(context, "点击", "游戏-插件-" + subjectEntity.getName(), kv); if (entity.getPluginPlatform() != null) { Intent intent = new Intent(context, GameDetailsActivity.class); intent.putExtra("gameId", entity.getId()); - intent.putExtra("entrance", "游戏-插件-" + name); + intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName()); context.startActivity(intent); } else { AppController.put("GameEntity", entity); Intent intent = new Intent(context, GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-插件-" + name); + intent.putExtra("entrance", "游戏-插件-" + subjectEntity.getName()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } @@ -781,8 +804,8 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", entity.getName()); kv.put("位置", ii + 1); DataUtils.onEvent(context, "点击", "游戏-插件-" + name, kv); @@ -847,7 +870,7 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter= Integer.parseInt(subjectList.get(i).getMore())){ holder.link.setVisibility(View.GONE); @@ -907,23 +931,6 @@ public class Game1FragmentAdapter extends RecyclerView.Adapter= Integer.parseInt(subjectList.get(i).getMore())){ holder.link.setVisibility(View.GONE); @@ -388,7 +391,7 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); kv.put("名字", gameInfoEntity.getName()); kv.put("位置", i + 1); - DataUtils.onEvent(context, "点击", "游戏-推荐-" + name, kv); + DataUtils.onEvent(context, "点击", "游戏-推荐-" + subjectEntity.getName(), kv); AppController.put("GameEntity", gameInfoEntity); Intent intent = new Intent(context, GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-推荐-" + name); + intent.putExtra("entrance", "游戏-推荐-" + subjectEntity.getName()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } @@ -434,8 +452,8 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter kv = new HashMap(); + Map kv = new HashMap<>(); kv.put("名字", gameEntity.getName()); kv.put("位置", i + 1); - DataUtils.onEvent(context, "点击", "游戏-推荐-" + name, kv); + DataUtils.onEvent(context, "点击", "游戏-推荐-" + subjectEntity.getName(), kv); AppController.put("GameEntity", gameEntity); Intent intent = new Intent(context, GameDetailsActivity.class); - intent.putExtra("entrance", "游戏-推荐-" + name); + intent.putExtra("entrance", "游戏-推荐-" + subjectEntity.getName()); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } @@ -514,11 +549,10 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter endTime) { // 测试时间已过 @@ -530,8 +564,8 @@ public class Game2FragmentAdapter extends RecyclerView.Adapter(); - gameMap = new ArrayMap>(); - platformMap = new ArrayMap>(); - nameMap = new ArrayMap(); - statusMap = new ArrayMap(); + locationMap = new ArrayMap<>(); + gameMap = new ArrayMap<>(); + platformMap = new ArrayMap<>(); + nameMap = new ArrayMap<>(); + statusMap = new ArrayMap<>(); dismissEntity = new DismissEntity(false); diff --git a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java index 6045d577b5..749b88d9d8 100644 --- a/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/game/Game3FragmentAdapter.java @@ -20,10 +20,12 @@ import com.gh.base.AppController; import com.gh.common.constant.Config; import com.gh.common.constant.Constants; import com.gh.common.util.DataUtils; +import com.gh.common.util.DisplayUtils; import com.gh.common.util.DownloadItemUtils; import com.gh.common.util.GameViewUtils; import com.gh.common.util.ImageUtils; import com.gh.common.util.TimestampUtils; +import com.gh.common.view.CardLinearLayout; import com.gh.download.DownloadEntry; import com.gh.gamecenter.GameDetailsActivity; import com.gh.gamecenter.R; @@ -262,7 +264,7 @@ public class Game3FragmentAdapter extends return new FooterViewHolder(view); } else { View view = LayoutInflater.from(viewGroup.getContext()).inflate( - R.layout.home_consolegame_item, viewGroup, false); + R.layout.game_normal_item, viewGroup, false); return new GameNormalViewHolder(view); } } @@ -278,13 +280,27 @@ public class Game3FragmentAdapter extends private void initGameNormalViewHolder(GameNormalViewHolder holder, final GameEntity entity, int position) { + // 第一个 + if (position == 0) { + ((CardLinearLayout) holder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) holder.itemView).setmTop(0); + } + + // 最后一个 + if (position == list.size() - 1) { + ((CardLinearLayout) holder.itemView).setBottom(true); + } else { + ((CardLinearLayout) holder.itemView).setBottom(false); + } + ImageUtils.getInstance(context).display(entity.getIcon(), holder.gameThumb); holder.gameNameAndSize.setText(entity.getName()); if (entity.getApk() == null || entity.getApk().isEmpty()) { holder.gameDes.setText(entity.getBrief()); } else { entity.getApk().get(0).setPlatform("local_plugin"); - holder.gameDes.setText(entity.getApk().get(0).getSize() + " | " + entity.getBrief()); + holder.gameDes.setText(String.format("%s %s", entity.getApk().get(0).getSize(), entity.getBrief())); } GameViewUtils.setLabelList(context, holder.labelList, entity.getTag()); diff --git a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java index d4d8427b6c..a88172b660 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News1FragmentAdapter.java @@ -30,6 +30,7 @@ import com.gh.common.util.ImageUtils; import com.gh.common.util.NewsUtils; import com.gh.common.util.TimestampUtils; import com.gh.common.util.Utils; +import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.NewsImage1ViewHolder; @@ -253,6 +254,21 @@ public class News1FragmentAdapter extends RecyclerView.Adapter= adapter.getPosition_today() + && position <= adapter.getTodaySize() + + adapter.getPosition_today()) { news_tv_label.setText("今天"); - news_tv_label.setTextColor(getActivity().getResources().getColor(R.color.theme)); - } else if (adapter.getPosition_before() != -1 && position <= 3) { + news_tv_label.setTextColor(0xFF00B7FA); + } else if (adapter.getPosition_before() != -1 + && position >= adapter.getPosition_before()) { news_tv_label.setText("昨天/以前"); news_tv_label.setTextColor(0xFF3A3A3A); } @@ -150,7 +169,7 @@ public class News3Fragment extends Fragment { news_pb_loading.setVisibility(View.VISIBLE); reuse_no_connection.setVisibility(View.GONE); adapter = new News3FragmentAdapter(getActivity(), news_list, - news_pb_loading, reuse_no_connection, news_rl_label, news_tv_label, true); + news_pb_loading, reuse_no_connection, news_swipe_refresh, news_tv_label, true); news_list.setAdapter(adapter); } else if (adapter.isNetworkError()) { adapter.setNetworkError(false); @@ -175,4 +194,22 @@ public class News3Fragment extends Fragment { news_rl_label = null; rparams = null; } + + private Handler handler = new Handler(); + + Runnable runnable = new Runnable() { + @Override + public void run() { + if (!isDestroy) { + adapter = new News3FragmentAdapter(getActivity(), news_list, + news_pb_loading, reuse_no_connection, news_swipe_refresh, news_tv_label, true); + news_list.setAdapter(adapter); + } + } + }; + + @Override + public void onRefresh() { + handler.postDelayed(runnable, 1000); + } } diff --git a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java index 17c6bef088..3be7a2ea1f 100644 --- a/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/news/News3FragmentAdapter.java @@ -2,7 +2,7 @@ package com.gh.gamecenter.news; import android.content.Context; import android.net.Uri; -import android.support.v7.widget.LinearLayoutManager; +import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; @@ -10,7 +10,6 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.LinearLayout; -import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; @@ -22,14 +21,19 @@ import com.gc.materialdesign.views.ProgressBarCircularIndeterminate; import com.gh.base.AppController; import com.gh.common.constant.Config; import com.gh.common.constant.Constants; +import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; +import com.gh.common.util.ImageUtils; +import com.gh.common.util.NewsUtils; import com.gh.common.util.TimestampUtils; -import com.gh.common.view.VerticalItemDecoration; +import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.CardListViewHolder; 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.manager.DataCollectionManager; import com.gh.gamecenter.volley.extended.JsonArrayExtendedRequest; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; @@ -40,21 +44,25 @@ import java.lang.reflect.Type; 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; /** - * + * * @author 温冠超 * @email 294299195@qq.com * @date 2015-8-5 modified 2015-8-21 资讯首页模块 */ -public class News3FragmentAdapter extends RecyclerView.Adapter { +public class News3FragmentAdapter extends + RecyclerView.Adapter { public static class ITEM_TYPE { public static final int head = 1;// head - public static final int card_list = 2;// 新闻列表类型 - public static final int refresh_footer = 3;// 刷新布局类型 + public static final int news_text = 2;// 新闻列表1类型 + public static final int news_image = 3;// 新闻列表2类型 + public static final int refresh_footer = 4;// 刷新布局类型 } private int position_today = -1;// 今天head的位置 @@ -65,30 +73,27 @@ public class News3FragmentAdapter extends RecyclerView.Adapter todayNewsList; private List beforeNewsList; - private int todayListSize; - private int beforeListSize; - private boolean isRemove; private boolean isLoading; private boolean isNetworkError; - public News3FragmentAdapter(Context con, - RecyclerView recyclerView, - ProgressBarCircularIndeterminate loading, - LinearLayout noconnection, - RelativeLayout rlabel, - TextView tlabel, - boolean isLoad) { + public News3FragmentAdapter(Context context, + RecyclerView recyclerView, + ProgressBarCircularIndeterminate loading, + LinearLayout noconnection, + SwipeRefreshLayout swipeRefreshLayout, + TextView tlabel, + boolean isLoad) { - context = con; + this.context = context; news_list = recyclerView; - news_rl_label = rlabel; + news_swipe_refresh = swipeRefreshLayout; news_tv_label = tlabel; news_pb_loading = loading; ll_noconnection = noconnection; @@ -101,10 +106,14 @@ public class News3FragmentAdapter extends RecyclerView.Adapter() { + @Override public void onResponse(JSONArray response) { @@ -140,6 +151,10 @@ public class News3FragmentAdapter extends RecyclerView.Adapter removeDuplicate(List list) { - for (int i = 0; i < list.size(); i++) { + for (int i = 0, size = list.size(); i < size; i++) { String id = list.get(i).getId(); final int index = i; @@ -238,9 +253,6 @@ public class News3FragmentAdapter extends RecyclerView.Adapter position_today + 1 + && position <= todayNewsList.size() + position_today) { + return ITEM_TYPE.news_text; } } @@ -306,8 +322,9 @@ public class News3FragmentAdapter extends RecyclerView.Adapter position_before + && position <= beforeNewsList.size() + position_before) { + return ITEM_TYPE.news_text; } } @@ -320,10 +337,14 @@ public class News3FragmentAdapter extends RecyclerView.Adapter position_today && position < position_before) { - // 今天 - if (!TextUtils.isEmpty(todayNewsList.get(0).getThumb())) { - height = DisplayUtils.dip2px(context, 82) - + DisplayUtils.dip2px(context, 38) * (todayNewsList.size() - 1); - } else { - height = DisplayUtils.dip2px(context, 37) * todayNewsList.size() - + DisplayUtils.dip2px(context, 1) * (todayNewsList.size() - 1); - } - - RecyclerView.LayoutParams rparams = (RecyclerView.LayoutParams) viewHolder.itemView.getLayoutParams(); - rparams.setMargins(DisplayUtils.dip2px(context, 6), 0, DisplayUtils.dip2px(context, 6), 0); - viewHolder.itemView.setLayoutParams(rparams); + final NewsEntity newsEntity = todayNewsList.get(0); + ImageUtils.getInstance(context).display(newsEntity.getThumb(), viewHolder.newsThumb); + String title = newsEntity.getTitle(); + if (title.contains("》")) { + viewHolder.newsMainTitle.setText(title.substring(0, title.indexOf("》") + 1)); + viewHolder.newsSubTitle.setVisibility(View.VISIBLE); + viewHolder.newsSubTitle.setText(title.substring(title.indexOf("》") + 1)); + } else if (title.contains(" ")) { + viewHolder.newsMainTitle.setText(title.substring(0, title.indexOf(" ") + 1)); + viewHolder.newsSubTitle.setVisibility(View.VISIBLE); + viewHolder.newsSubTitle.setText(title.substring(title.indexOf(" ") + 1)); } else { - // 昨天/以前 - height = DisplayUtils.dip2px(context, 37) * beforeNewsList.size() - + DisplayUtils.dip2px(context, 1) * (beforeNewsList.size() - 1); - - RecyclerView.LayoutParams rparams = (RecyclerView.LayoutParams) viewHolder.itemView.getLayoutParams(); - rparams.setMargins(DisplayUtils.dip2px(context, 6), 0, DisplayUtils.dip2px(context, 6), DisplayUtils.dip2px(context, 6)); - viewHolder.itemView.setLayoutParams(rparams); + viewHolder.newsMainTitle.setText(title); + viewHolder.newsSubTitle.setVisibility(View.GONE); } - params.height = height; - viewHolder.card_list_show.setLayoutParams(params); + viewHolder.itemView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("文章类型", newsEntity.getType()); + kv.put("入口", "攻略-今天"); + DataUtils.onEvent(context, "资讯-攻略", newsEntity.getTitle(), kv); - if (viewHolder.card_list_show.getAdapter() == null) { - viewHolder.card_list_show.setHasFixedSize(true); - viewHolder.card_list_show.setLayoutManager(new LinearLayoutManager(context)); - if (position > position_today && position < position_before) { - viewHolder.card_list_show.setAdapter(new NewsListAdapter(context, todayNewsList, "今天")); - todayListSize = todayNewsList.size(); - } else { - viewHolder.card_list_show.setAdapter(new NewsListAdapter(context, beforeNewsList, "昨天/以前")); - beforeListSize = beforeNewsList.size(); + Map map = new HashMap<>(); + map.put("location", "今天"); + map.put("createOn", System.currentTimeMillis() / 1000); + map.put("news", newsEntity.getTitle()); + map.put("page", "攻略"); + DataCollectionManager.onEvent(context, "click-item", map); + + //统计阅读量 + NewsUtils.statNewsViews(newsEntity.getId()); + NewsUtils.startNewsActivity(context, newsEntity, "资讯-攻略-今天"); } - viewHolder.card_list_show.addItemDecoration(new VerticalItemDecoration(context, 1)); - } else { - if (position > position_today && position < position_before) { - viewHolder.card_list_show.getAdapter().notifyItemRangeInserted( - todayListSize + 1, todayNewsList.size() - todayListSize); - todayListSize = todayNewsList.size(); + }); + } else if (holder instanceof NewsTextViewHolder) { + NewsTextViewHolder viewHolder = (NewsTextViewHolder) holder; + + NewsEntity newsEntity = null; + String from = null; + if (position > position_today + && position <= todayNewsList.size() + position_today) { + newsEntity = todayNewsList.get(position - position_today - 1); + from = "今天"; + // 第一个 + if (position - position_today - 1 == 0) { + ((CardLinearLayout) viewHolder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + viewHolder.news_line.setVisibility(View.GONE); } else { - viewHolder.card_list_show.getAdapter().notifyItemRangeInserted( - position_before + beforeListSize + 1, beforeNewsList.size() - beforeListSize); - beforeListSize = beforeNewsList.size(); + ((CardLinearLayout) viewHolder.itemView).setmTop(0); + viewHolder.news_line.setVisibility(View.VISIBLE); + } + + // 最后一个 + if (position - position_today == todayNewsList.size()) { + ((CardLinearLayout) viewHolder.itemView).setBottom(true); + ((CardLinearLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) viewHolder.itemView).setBottom(false); + ((CardLinearLayout) viewHolder.itemView).setmBottom(0); + } + } else if (position > position_before + && position <= beforeNewsList.size() + position_before) { + newsEntity = beforeNewsList.get(position - position_before - 1); + from = "昨天/以前"; + // 第一个 + if (position - position_before - 1 == 0) { + ((CardLinearLayout) viewHolder.itemView).setmTop(DisplayUtils.dip2px(context, 8)); + viewHolder.news_line.setVisibility(View.GONE); + } else { + ((CardLinearLayout) viewHolder.itemView).setmTop(0); + viewHolder.news_line.setVisibility(View.VISIBLE); + } + + // 最后一个 + if (position - position_before == beforeNewsList.size()) { + ((CardLinearLayout) viewHolder.itemView).setBottom(true); + ((CardLinearLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(context, 8)); + } else { + ((CardLinearLayout) viewHolder.itemView).setBottom(false); + ((CardLinearLayout) viewHolder.itemView).setmBottom(0); } } + if (newsEntity != null) { + final NewsEntity entity = newsEntity; + final String entrance = from; + viewHolder.newsType.setBackgroundResource(NewsUtils + .getDrawableIdByType(entity.getType())); + viewHolder.newsType.setText(entity.getType()); + viewHolder.newsTitle.setText(entity.getTitle()); + viewHolder.itemView.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Map kv = new HashMap<>(); + kv.put("文章类型", entity.getType()); + kv.put("入口", "攻略-" + entrance); + DataUtils.onEvent(context, "资讯-攻略", entity.getTitle(), kv); + Map map = new HashMap<>(); + map.put("location", entrance); + map.put("createOn", System.currentTimeMillis() / 1000); + map.put("news", entity.getTitle()); + map.put("page", "攻略"); + DataCollectionManager.onEvent(context, "click-item", map); + + //统计阅读量 + NewsUtils.statNewsViews(entity.getId()); + NewsUtils.startNewsActivity(context, entity, "资讯-攻略-" + entrance); + } + }); + } } else if (holder instanceof NewsFooterViewHolder) { NewsFooterViewHolder viewHolder = (NewsFooterViewHolder) holder; @@ -413,6 +495,10 @@ public class News3FragmentAdapter extends RecyclerView.Adapter(); + gameList = new ArrayList<>(); ConcernManager concernManager = new ConcernManager(context); concernList = concernManager.getConcernGame(); @@ -77,7 +78,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter result = new ArrayList(); + final List result = new ArrayList<>(); final int size = concernList.size(); count = 0; for (int i = 0; i < concernList.size(); i++) { @@ -93,27 +94,27 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter data) { - List list = new ArrayList(); + List list = new ArrayList<>(); Gson gson = new Gson(); for (int i = 0; i < data.size(); i++) { list.add(gson.fromJson(data.get(i).toString(), GameEntity.class)); @@ -151,7 +152,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter 0 && viewType > 1 && viewType <= 1 + gameList.size()) { View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_consolegame_item, parent, false); + R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); } else if (isRemove) { RelativeLayout relativeLayout = new RelativeLayout(context); @@ -177,7 +178,7 @@ public class ConcernFragmentAdapter extends RecyclerView.Adapter 0 && viewType > 1 && viewType <= 1 + gameList.size()) { View view = LayoutInflater.from(parent.getContext()).inflate( - R.layout.home_consolegame_item, parent, false); + R.layout.game_normal_item, parent, false); return new GameNormalViewHolder(view); } else if (isRemove) { RelativeLayout relativeLayout = new RelativeLayout(context); @@ -316,7 +317,7 @@ public class InstallFragmentAdapter extends RecyclerView.Adapter { +public class SearchGameListFragmentAdapter extends RecyclerView.Adapter { private Context context; @@ -111,38 +122,148 @@ public class SearchGameListFragmentAdapter extends RecyclerView.Adapter map = new HashMap(); + map.put("key", key); + map.put("from", "搜索页面"); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(context, "search", map); + + Map kv = new HashMap(); + kv.put("入口", "搜索"); + DataUtils.onEvent(context, "游戏详情", gameEntity.getName(), kv); + + Map map2 = new HashMap(); + map2.put("location", "搜索"); + map2.put("createOn", System.currentTimeMillis() / 1000); + map2.put("game", gameEntity.getName()); + map2.put("page", "搜索"); + DataCollectionManager.onEvent(context, "click-item", map2); + + AppController.put("GameEntity", gameEntity); + Intent intent = new Intent(context, GameDetailsActivity.class); + intent.putExtra("entrance", "搜索"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + }); + + if (gameEntity.getApk() == null || gameEntity.getApk().isEmpty()) { + viewHolder.downloadBtn.setVisibility(View.GONE); + } else { + viewHolder.downloadBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(final View v) { + InputMethodManager imm = (InputMethodManager) context + .getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(v.getWindowToken(), 0); + if (!dismissEntity.isShow()) { + dismissEntity.setShow(true); + if (NetworkUtils.isWifiConnected(context)) { + DownloadDialog.getInstance(context) + .showPopupWindow(v, gameEntity, "搜索", "搜索:" + gameEntity.getName()); + } else { + DialogUtils.showWarningDialog(context, new DialogUtils.ConfiremListener() { + @Override + public void onConfirem() { + DownloadDialog.getInstance(context) + .showPopupWindow(v, gameEntity, "搜索", "搜索:" + gameEntity.getName()); + } + }); + } + } + } + }); + } + + if (Config.isShow) { + viewHolder.downloadBtn.setVisibility(View.VISIBLE); + } else { + viewHolder.downloadBtn.setVisibility(View.GONE); + } + } else if (holder instanceof SearchHistoryViewHolder) { + SearchHistoryViewHolder viewHolder = (SearchHistoryViewHolder) holder; + + if (position + 1 == gameList.size()) { + ((CardLinearLayout) viewHolder.itemView).setmBottom(DisplayUtils.dip2px(context, 8)); + ((CardLinearLayout) viewHolder.itemView).setBottom(true); + } else { + ((CardLinearLayout) viewHolder.itemView).setmBottom(0); + ((CardLinearLayout) viewHolder.itemView).setBottom(false); + } + + viewHolder.search_history_name.setText(gameEntity.getName()); + viewHolder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + DataUtils.onEvent(context, "搜索页面", key); + + Map map = new HashMap<>(); + map.put("key", key); + map.put("from", "搜索页面"); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(context, "search", map); + + Map map2 = new HashMap<>(); + map2.put("location", "搜索"); + map2.put("createOn", System.currentTimeMillis() / 1000); + map2.put("game", gameEntity.getName()); + map2.put("page", "搜索"); + DataCollectionManager.onEvent(context, "click-item", map2); + + AppController.put("GameEntity", gameEntity); + Intent intent = new Intent(context, GameDetailsActivity.class); + intent.putExtra("entrance", "搜索"); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(intent); + } + }); } } @Override - public CardListViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { - View itemView = LayoutInflater.from(context).inflate( - R.layout.reuse_card_list, viewGroup, false); - int height; - if (gameList.size() == 1) { - height = DisplayUtils.dip2px(context, 95); + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { + if (viewType == 0) { + View itemView = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.game_normal_item, viewGroup, false); + return new GameNormalViewHolder(itemView); } else { - height = DisplayUtils.dip2px(context, 95) - + DisplayUtils.dip2px(context, 46) * (gameList.size() - 1); + View itemView = LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.fm_search_history_item, viewGroup, false); + return new SearchHistoryViewHolder(itemView); } - ViewGroup.LayoutParams params = itemView.findViewById( - R.id.card_list_show).getLayoutParams(); - params.height = height; - itemView.findViewById(R.id.card_list_show).setLayoutParams(params); - return new CardListViewHolder(itemView); } } 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 e208145012..f7260bacb8 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryFragmentAdapter.java @@ -2,7 +2,6 @@ package com.gh.gamecenter.search; import android.app.Dialog; import android.content.Context; -import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.ViewHolder; import android.view.LayoutInflater; @@ -11,15 +10,21 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; +import com.gh.common.util.DataUtils; import com.gh.common.util.DisplayUtils; -import com.gh.common.view.VerticalItemDecoration; +import com.gh.common.view.CardLinearLayout; import com.gh.gamecenter.R; -import com.gh.gamecenter.adapter.viewholder.CardListViewHolder; import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; import com.gh.gamecenter.db.SearchHistoryDao; +import com.gh.gamecenter.eventbus.EBSearch; +import com.gh.gamecenter.manager.DataCollectionManager; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; + +import de.greenrobot.event.EventBus; public class SearchHistoryFragmentAdapter extends RecyclerView.Adapter { @@ -52,7 +57,7 @@ public class SearchHistoryFragmentAdapter extends RecyclerView.Adapter map = new HashMap<>(); + map.put("key", str); + map.put("from", "搜索页面"); + map.put("createdOn", System.currentTimeMillis() / 1000); + DataCollectionManager.onEvent(context, "search", map); + + EventBus.getDefault().post(new EBSearch(str, true)); + dao.add(viewHolder.search_history_name.getText().toString()); + } + }); } else if (holder instanceof ReuseViewHolder) { holder.itemView.setOnClickListener(new OnClickListener() { @Override diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryViewHolder.java b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryViewHolder.java index fea0511d44..1b21bc7ed3 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchHistoryViewHolder.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchHistoryViewHolder.java @@ -11,11 +11,13 @@ import com.gh.gamecenter.R; */ public class SearchHistoryViewHolder extends RecyclerView.ViewHolder { + public View search_history_line; public TextView search_history_name; public SearchHistoryViewHolder(View itemView) { super(itemView); + search_history_line = itemView.findViewById(R.id.search_history_line); search_history_name = (TextView) itemView.findViewById(R.id.search_history_name); } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchResultListAdapter.java b/app/src/main/java/com/gh/gamecenter/search/SearchResultListAdapter.java index 9b0e851cb9..8017e8b2c5 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchResultListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/search/SearchResultListAdapter.java @@ -75,7 +75,7 @@ public class SearchResultListAdapter extends RecyclerView.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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/frame_center.png b/app/src/main/res/drawable-hdpi/frame_center.png new file mode 100644 index 0000000000000000000000000000000000000000..9868fca9f08f0434e59d455ed22f9d98bb4bc3ac GIT binary patch literal 2261 zcmbVMYg7|w8Xm7)ydfZ9l{$n~kebZoet}eTL0~oEmR&dsg&`RrhGarAKth$WfEF>8 z?J-^sD~ARSHH$0OQ)&?@r67Wciqd5lUDRp|1ynr8MasJ1PG-Q}AD;f$IXRQ>d*A1I z-plvBb2v^JwaW7yPXGW`#YD>!0KoknV$E=0OuUx>A7v4L>+#5BJQ2&p3lI|uNHkam z3dZP>EHnW{G}hc}XaoVZXjRF0vSPPLjp-SP3&XJJjRYG2BDPzMh+2o@UB z9K4_)N6l)J)`)8{1L#sjGO#>cOd~R-O3)h>iZ{Xr^L(R-mO&Q82r(Hjq}RLZBGG0% z0sU_pZ$+C`RwD`}pk^%3q$bWIGkAea^zPRKxqw7AqF9rbI20sDj;ZtXr~!|Wi)n<1 zq0wqYY&Ks5!#p9K#}hE=>P(K1E`(WZIvdesa1j_`a!}2J&fEA>CQl-f2&6o@9A+{j zc|w^$D(5np0ts`cOe*9qaAOQ+95JZTh1gmm_B>bet6Y)Hgd#X*Qejxm!Yzo)#&FD> zjTu3i%ysHq1{VxX(i${afqARzps2d#s7afTYId41JxF$1qkoD8DgOa!6BY(!1x z@HuKaf@Bgafk30-3t$dgBcRRmHUDo1AtEWrbzT1F`Yf1;JLy`!83tnWW}Hw1F+(O| zSV}wAzXt$IU&P2ID$Cs`!>LE_fdR|nQZBp}zpNi;{CwpXw}PS=HPUahQs zNl%&%o|}8YulK#Ptqe`wcB1>~y&Yq?i zd%ACr|Ho_2Hs*xS@=0KO&tT2;*K(xNr{c_TTu_?zm5&UH?h#66{yy`>{`t9T5(U`C zYOB4Dau3oK?s-nH7Yzf^J+YVlFQ;|229tmQMWVtzR_FQ6=hBqI<+@tVM`~WWjiRn@$^I|ElyEUU#$05G+wFA~9|MxWI!0A>~gkhkc~N z$?OBRne#7Cm4$6@7Hn}8X-yGq5@xGy*i!Z)Un=->Xsh_DwfVOCN<1UfK5?wFny=p! z0aagHN#d5Y^muoCnc_&9>^$0==yP$OwBUJscIED#5aALMAhV8sU)R6kBb@al`|Os} z1-|2_eyF`cx`6!-UVQVAO0Y7#cc`5=;#{?EB(I9`cyS0!a@&im(x%Tm?vhn_t(Hhb zt2}k#$aU|ExS*y>(&n{vN~84W+1j*|-W_8-b^YQB;kl&iJ>YR{I>-6xA=mdA0BoQ2 zdNih06;5=<_aW7IQ;0{`U_*tm+;1?@@r&x*G7=OJA3o(2B|7+vwl-yjlx^JnmwThh zj^>#Fw#x2JBGPxq?(_6_NaGXBZ|(BP`@-wuM5SB(Qi^?lHqNm(vHWBI0alB%Z{0YE z469q#lD^j3i*~QOLs8x0-0(8%gForqZrr%uIQFk?ndVAL7#P6SyL`ep(<3QC&+c9R zs`Oa4!`|zTBqWjk;tMJKWj9B__2s+QA0($=GSmD7(Ag z?$h8A<%nKAo=-LZ`J+aq_WoUur}g=k_}S&ZyGkkottCf(eE7w=A+H+4Z=a6!4%?`! zVNt~1;)dQ-T3+u>dEib$ZI3&%f;Qb$_S`@2B`8}@+S=;F7MK4Gn%G3{+GCBWLFF}< zF3~E#JjuRqhRSX(snHKo|tb*t?UCaPB3q`CXu z2SwlHr?M;!atME?W28_V%~m z?${X8%8!O$&1cd-JGK+~#LwjPs)_R0vx1a;PH!6cq+_PIZuW$IZhFY0){Qg=eD{r~ zRItgYYIs~0jvh?ELmmIhXFs~Vp0GykZGr>&S03pHx<;?9AqfvRI7b4j>sO2ggk3TE z{U&AFchJ9!8Y;L=%n)pGLtFZlqPx&dLNV z;Eo@o@8rD(+3aRgx%ku5Q{Ghv5=XC2J=(r#InZIR_A_@Z?Q%I|B9-z+X?n?j0B^w| A761SM literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/frame_left_square.png b/app/src/main/res/drawable-hdpi/frame_left_bottom_square.png similarity index 100% rename from app/src/main/res/drawable-hdpi/frame_left_square.png rename to app/src/main/res/drawable-hdpi/frame_left_bottom_square.png diff --git a/app/src/main/res/drawable-xhdpi/md_switch_thumb_on_normal.png b/app/src/main/res/drawable-hdpi/frame_left_top_square.png similarity index 73% rename from app/src/main/res/drawable-xhdpi/md_switch_thumb_on_normal.png rename to app/src/main/res/drawable-hdpi/frame_left_top_square.png index 002921662a773fb2618d3162bf3b513d1f525718..cf104b5ed5da5557c0f8f97e60033a41519f8558 100644 GIT binary patch delta 341 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 A761SM diff --git a/app/src/main/res/drawable-hdpi/frame_top_no_back.png b/app/src/main/res/drawable-hdpi/frame_top_no_back.png deleted file mode 100644 index 3997e16334bab93cdee285d112d0bbc0adf29759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2408 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 literal 1008 zcmVklk~uNmNtXXD==O`@Cq6a`xs8_6$G!K=@pnA*nJ=;Lz5Ml9hj^jOrSF} z9>7Er)u$vqEQ5GYK1no$dav%QTc2CRE54&a)B^D*fx1Ad1RHu>AQOTM0j3~E^K<`8 z*=y-CtlmiVO%PvGpw2142qIH}lQm?a=PO_pkOs&)ftDf?VzdgqtHmV~n|+@Zz|kP= z5&Q_qR{{I;jz4k%*8eq9gmeKOONIUUx%bbj0Hm*u?g1V`&@JnD+et=QACSjY=${rv zVgEfU{1Jl%WC_LR=uSikd*=cHRkkdNu*D2|aLWOSruAW#l&v z(2Qq&ofAY-A;j%6^y+#(0igU)r0xoRX4l9&H=%q6!H0R5=y$I4hzyZS!ab# zZ$C>NQB)@@jSA$t3;=a1vYx>Ar{DkLv?y{WLQVkYusKi$KpD!O0az#~;`C<$$VPV0 znuNa=K$e8AGTbVyhh^v;?wb`^BYFhA6IZ|3lwrOrxynpS7UX-Iogf+IE$3ZX_buIu z^O16;){U3kB5p4SGU_Vq-H6?~IfC+O~(emWJK+mf$PmW#wA0^gRQcji*NE()^zx)b0J z(rZ~|xw$MSuMQx%`oYEInj%j{GH!>0-H{pgNNPwQgy@%DIx`*d5x|Lv^oz8H@l|#? z?QfP&V2p}xH!@k%OP5oLtI$n(Ee#bJW{F*eUe`sT6TnUfgXq$tNmvDWocu4M3yOkK eaWj4mW&Z<(e2-coR9 + android:color="@color/cutting_line"/> - - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_essaydetails.xml b/app/src/main/res/layout/activity_essaydetails.xml index 8a1ae9bcab..b32fdf277e 100644 --- a/app/src/main/res/layout/activity_essaydetails.xml +++ b/app/src/main/res/layout/activity_essaydetails.xml @@ -20,7 +20,7 @@ android:id="@+id/essaydetails_rv_show" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/background" + android:paddingBottom="44dp" android:visibility="invisible"> @@ -51,15 +51,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:background="@drawable/shadow_bg" - android:gravity="center_vertical" - android:orientation="horizontal" + android:orientation="vertical" android:visibility="gone" > + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index fc65b95bde..ace250cf88 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,93 +1,109 @@ - + android:layout_height="match_parent" > + android:layout_height="match_parent" + android:paddingBottom="55dp"> + android:layout_alignParentBottom="true" + android:orientation="vertical"> + + + android:layout_width="match_parent" + android:layout_height="55dp" + android:background="@android:color/white" + android:orientation="horizontal" + android:gravity="center_vertical" + android:paddingBottom="5dp" + android:baselineAligned="false" > - - - + android:layout_weight="1" + android:gravity="center" + android:orientation="vertical" > + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_new_gamedetails.xml b/app/src/main/res/layout/activity_new_gamedetails.xml index 2dbb4be59f..e234e7f6d9 100644 --- a/app/src/main/res/layout/activity_new_gamedetails.xml +++ b/app/src/main/res/layout/activity_new_gamedetails.xml @@ -14,22 +14,25 @@ android:id="@+id/gamedetails_rv" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/background" - android:layout_above="@id/gamedetails_ll_bottom"/> + android:paddingBottom="44dp"> + + android:orientation="vertical"> + + + android:layout_height="match_parent" > + android:layout_marginBottom="5dp" + app:cardBackgroundColor="#FFFFFF"> + + android:layout_height="match_parent" > @@ -32,7 +32,7 @@ android:id="@+id/essaydetails_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textColor="#b3b3b3" + android:textColor="@color/hint" android:textSize="12sp" /> @@ -118,5 +118,4 @@ - \ No newline at end of file diff --git a/app/src/main/res/layout/fm_downloadmanager_item.xml b/app/src/main/res/layout/fm_downloadmanager_item.xml index 30daf32dd3..18a41fa50c 100644 --- a/app/src/main/res/layout/fm_downloadmanager_item.xml +++ b/app/src/main/res/layout/fm_downloadmanager_item.xml @@ -1,106 +1,94 @@ - + android:gravity="center_vertical" + android:padding="12dp" + android:orientation="horizontal" + android:background="@drawable/reuse_listview_item_style" + app:left="8dp" + app:bottom="8dp" + app:right="8dp"> + + - - - - - - - - - - - - - - - - - - + android:layout_weight="1" + android:orientation="vertical" + android:layout_marginLeft="10dp" + android:layout_marginRight="10dp"> + android:id="@+id/dm_item_tv_title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:ellipsize="end" + android:singleLine="true" + android:textColor="#3a3a3a" + android:textSize="16sp" + android:lineSpacingMultiplier="0.9" + android:includeFontPadding="false"/> + + + + + + + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_read2_special1.xml b/app/src/main/res/layout/fm_read2_special1.xml index 786844c910..83a3323a96 100644 --- a/app/src/main/res/layout/fm_read2_special1.xml +++ b/app/src/main/res/layout/fm_read2_special1.xml @@ -1,79 +1,57 @@ - + android:background="@drawable/reuse_listview_item_style" + android:orientation="vertical" + android:paddingLeft="12dp" + android:paddingRight="12dp" + android:paddingTop="15dp" + android:paddingBottom="15dp" + app:left="8dp" + app:right="8dp" + app:bottom="8dp"> + + + + + android:layout_height="wrap_content" + android:layout_marginTop="8dp"> - - - - - - - - - - + android:textColor="@color/content" + android:textSize="12sp" /> - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_read2_special2.xml b/app/src/main/res/layout/fm_read2_special2.xml index dd72a701b5..cf41e919e0 100644 --- a/app/src/main/res/layout/fm_read2_special2.xml +++ b/app/src/main/res/layout/fm_read2_special2.xml @@ -1,99 +1,77 @@ - + + + + + + + + + + + + + + android:layout_height="wrap_content" + android:layout_marginTop="8dp"> - - - - - - - - - - - - - - - - - - + android:textColor="@color/content" + android:textSize="12sp" /> - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_read_item.xml b/app/src/main/res/layout/fm_read_item.xml index b72d63e815..7385597926 100644 --- a/app/src/main/res/layout/fm_read_item.xml +++ b/app/src/main/res/layout/fm_read_item.xml @@ -1,67 +1,45 @@ - + android:orientation="horizontal" + android:background="@drawable/reuse_listview_item_style" + android:paddingLeft="12dp" + android:paddingRight="12dp" + android:paddingTop="15dp" + android:paddingBottom="15dp" + app:left="8dp" + app:right="8dp" + app:bottom="8dp"> + + - - + android:layout_height="62dp" + android:layout_marginLeft="10dp"> - - - - - - - + android:textColor="@color/content" + android:textSize="12sp" /> - \ No newline at end of file + + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_search_history_delete_item.xml b/app/src/main/res/layout/fm_search_history_delete_item.xml index 849b72991d..675b7d6bf4 100644 --- a/app/src/main/res/layout/fm_search_history_delete_item.xml +++ b/app/src/main/res/layout/fm_search_history_delete_item.xml @@ -1,40 +1,28 @@ - + android:orientation="horizontal" + android:paddingTop="10dp" + android:paddingBottom="10dp" + android:gravity="center" + android:background="@drawable/reuse_listview_item_style" + app:left="8dp" + app:right="8dp" + app:bottom="8dp"> - + + - - - - - - - - + android:text="@string/action_search_delete" + android:textSize="14sp" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/fm_search_history_item.xml b/app/src/main/res/layout/fm_search_history_item.xml index f1a3afd9f5..5996bc6081 100644 --- a/app/src/main/res/layout/fm_search_history_item.xml +++ b/app/src/main/res/layout/fm_search_history_item.xml @@ -1,15 +1,26 @@ - - + app:left="8dp" + app:right="8dp"> + + + - + diff --git a/app/src/main/res/layout/fm_update_item.xml b/app/src/main/res/layout/fm_update_item.xml index 468e503fb8..2f2c52e0fd 100644 --- a/app/src/main/res/layout/fm_update_item.xml +++ b/app/src/main/res/layout/fm_update_item.xml @@ -1,73 +1,63 @@ - + app:left="8dp" + app:bottom="8dp" + app:right="8dp"> + + - - - - - - - - - - - + android:layout_weight="1" + android:orientation="vertical" + android:layout_marginLeft="10dp" + android:layout_marginRight="10dp"> + android:id="@+id/gu_item_tv_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="#3a3a3a" + android:textSize="16sp" + android:layout_marginBottom="5dp" + android:lineSpacingMultiplier="0.9" + android:includeFontPadding="false"/> + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_news3.xml b/app/src/main/res/layout/fragment_news3.xml index 002daf9152..80ba665446 100644 --- a/app/src/main/res/layout/fragment_news3.xml +++ b/app/src/main/res/layout/fragment_news3.xml @@ -1,9 +1,10 @@ - + + android:layout_height="match_parent" > - @@ -13,36 +14,35 @@ android:layout_height="match_parent" android:background="@color/background"> + - + - - - - - - - + android:gravity="center" + android:text="我的游戏" + android:textColor="@android:color/white" + android:paddingLeft="16dp" + android:textSize="12sp" /> - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_original.xml b/app/src/main/res/layout/fragment_original.xml index ede35af083..6cfa13c5cf 100644 --- a/app/src/main/res/layout/fragment_original.xml +++ b/app/src/main/res/layout/fragment_original.xml @@ -1,35 +1,28 @@ - + android:layout_height="match_parent" > - - + android:layout_height="wrap_content" + android:background="@color/background"> + + - - - + - + - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_news_search_item.xml b/app/src/main/res/layout/game_news_search_item.xml index 07b4162f50..520b9d16fa 100644 --- a/app/src/main/res/layout/game_news_search_item.xml +++ b/app/src/main/res/layout/game_news_search_item.xml @@ -2,7 +2,6 @@ + android:textColor="@android:color/white"/> \ No newline at end of file diff --git a/app/src/main/res/layout/game_normal_item.xml b/app/src/main/res/layout/game_normal_item.xml index 85ea402a62..f38e107cf5 100644 --- a/app/src/main/res/layout/game_normal_item.xml +++ b/app/src/main/res/layout/game_normal_item.xml @@ -1,10 +1,15 @@ - + android:layout_height="wrap_content" + android:padding="10dp" + android:gravity="center_vertical" + android:orientation="horizontal" + android:background="@drawable/reuse_listview_item_style" + app:left="8dp" + app:right="8dp" + app:bottom="8dp"> @@ -22,17 +25,13 @@ + android:layout_height="62dp"/> @@ -132,8 +131,6 @@ android:gravity="center" android:text="下载" android:textColor="@android:color/white" - android:layout_alignParentRight="true" - android:layout_centerVertical="true" android:textSize="14sp" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/game_test_item.xml b/app/src/main/res/layout/game_test_item.xml index 96f8dc6c92..23b796cb5b 100644 --- a/app/src/main/res/layout/game_test_item.xml +++ b/app/src/main/res/layout/game_test_item.xml @@ -1,10 +1,15 @@ - + android:layout_height="wrap_content" + android:padding="10dp" + android:gravity="center_vertical" + android:orientation="horizontal" + android:background="@drawable/reuse_listview_item_style" + app:left="8dp" + app:right="8dp" + app:bottom="8dp"> @@ -22,19 +25,15 @@ + android:layout_height="62dp"/> + android:layout_marginLeft="8dp" + android:layout_marginRight="8dp"> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/home_game_head_item.xml b/app/src/main/res/layout/home_game_head_item.xml index 690f18ba67..c4617022dc 100644 --- a/app/src/main/res/layout/home_game_head_item.xml +++ b/app/src/main/res/layout/home_game_head_item.xml @@ -1,50 +1,63 @@ - - - - - + android:orientation="vertical" + android:paddingLeft="10dp" + android:paddingRight="10dp" + app:left="8dp" + app:right="8dp"> - - + android:gravity="center_vertical"> + android:id="@+id/head_thumb" + android:layout_width="20dp" + android:layout_height="20dp" + android:layout_marginRight="5dp" /> + + + + + + + + + + - \ No newline at end of file + + + \ No newline at end of file diff --git a/app/src/main/res/layout/home_game_image_item.xml b/app/src/main/res/layout/home_game_image_item.xml index 82e1960cea..4f9f36fcd4 100644 --- a/app/src/main/res/layout/home_game_image_item.xml +++ b/app/src/main/res/layout/home_game_image_item.xml @@ -1,8 +1,11 @@ - + android:layout_height="match_parent" + app:left="8dp" + app:right="8dp"> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_newsimage_type.xml b/app/src/main/res/layout/home_list_item_newsimage_type.xml index 49d04b1d1b..f0ce1b442d 100644 --- a/app/src/main/res/layout/home_list_item_newsimage_type.xml +++ b/app/src/main/res/layout/home_list_item_newsimage_type.xml @@ -1,10 +1,14 @@ - + android:padding="8dp" + app:left="8dp" + app:right="8dp" + app:top="8dp"> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/home_list_item_newsnormal_type.xml b/app/src/main/res/layout/home_list_item_newsnormal_type.xml index 119a8c3e70..8bc1fd20d3 100644 --- a/app/src/main/res/layout/home_list_item_newsnormal_type.xml +++ b/app/src/main/res/layout/home_list_item_newsnormal_type.xml @@ -1,31 +1,51 @@ - + android:paddingLeft="8dp" + android:paddingRight="8dp" + app:left="8dp" + app:right="8dp"> - + + + android:gravity="center_vertical" + android:paddingTop="8dp" + android:paddingBottom="8dp" + android:orientation="horizontal"> - + - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/image_card_game_head_item.xml b/app/src/main/res/layout/image_card_game_head_item.xml index afbf410b3a..28b3eacb70 100644 --- a/app/src/main/res/layout/image_card_game_head_item.xml +++ b/app/src/main/res/layout/image_card_game_head_item.xml @@ -14,7 +14,7 @@ android:layout_width="7.5dp" android:layout_height="8dp" android:layout_alignParentLeft="true" - android:src="@drawable/frame_left_square" + android:src="@drawable/frame_left_bottom_square" android:scaleType="centerCrop" /> @@ -31,7 +31,7 @@ android:layout_width="7.5dp" android:layout_height="8dp" android:layout_alignParentRight="true" - android:src="@drawable/frame_right_square" + android:src="@drawable/frame_right_bottom_square" android:scaleType="centerCrop" /> diff --git a/app/src/main/res/layout/image_card_home_game_image_item.xml b/app/src/main/res/layout/image_card_home_game_image_item.xml index 68b26f28cf..583ce96cbc 100644 --- a/app/src/main/res/layout/image_card_home_game_image_item.xml +++ b/app/src/main/res/layout/image_card_home_game_image_item.xml @@ -12,7 +12,7 @@ android:layout_width="7.5dp" android:layout_height="8dp" android:layout_alignParentLeft="true" - android:src="@drawable/frame_left_square" + android:src="@drawable/frame_left_bottom_square" android:scaleType="centerCrop" /> @@ -29,7 +29,7 @@ android:layout_width="7.5dp" android:layout_height="8dp" android:layout_alignParentRight="true" - android:src="@drawable/frame_right_square" + android:src="@drawable/frame_right_bottom_square" android:scaleType="centerCrop" /> diff --git a/app/src/main/res/layout/plugin1_fragment.xml b/app/src/main/res/layout/plugin1_fragment.xml index 63892c93bb..18c43643c6 100644 --- a/app/src/main/res/layout/plugin1_fragment.xml +++ b/app/src/main/res/layout/plugin1_fragment.xml @@ -11,8 +11,7 @@ + android:layout_height="wrap_content"> diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index a3293c3850..700dea81bf 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -58,4 +58,12 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index ab21eb9fe4..48aeae7ca5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -11,10 +11,12 @@ #B3B3B3 #EDF2F4 + #EDEDED - #E7E7E7 + + #EBEBEB #00B7FA diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dff563936c..d9f860c5ac 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -23,4 +23,6 @@ Set accept time %1$s - %2$s success. Set accept time fail for %1$s. + 100% + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 7dbbb9973f..ecb2eb6c42 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -33,6 +33,8 @@ true @null true + + @color/background