From dd8360f5e898f76b2bbeee8d83ac2a13472bba72 Mon Sep 17 00:00:00 2001 From: kehaoyuan Date: Thu, 21 Feb 2019 11:13:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=B8=E6=88=8F=E4=B8=8B=E8=BD=BD=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E5=A2=9E=E5=8A=A0=E5=85=AC=E5=91=8A(=E8=A1=A5?= =?UTF-8?q?=E5=85=85)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gh/common/view/DownloadDialog.java | 8 ++- .../common/view/LimitHeightLinearLayout.java | 59 ++++++++++++++++++ .../view/MeasureLinearLayoutManager.java | 62 ------------------- app/src/main/res/layout/imprint_dialog.xml | 6 +- 4 files changed, 69 insertions(+), 66 deletions(-) create mode 100644 app/src/main/java/com/gh/common/view/LimitHeightLinearLayout.java delete mode 100644 app/src/main/java/com/gh/common/view/MeasureLinearLayoutManager.java diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index e334640966..50a5494328 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -161,7 +161,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { dialogAdMirror.setText(downloadAd.getTitle()); dialogAd.setOnClickListener(v -> { if ("imprint".equals(downloadAd.getType())) { - showImprintDialog(); + showImprintDialog(downloadAd.getTitle()); } else { DirectUtils.directToLinkPage( mContext, @@ -212,7 +212,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { DownloadManager.getInstance(mContext).addObserver(dataWatcher); } - private void showImprintDialog() { + private void showImprintDialog(String titleName) { Dialog dialog = new Dialog(mContext); View inflate = LayoutInflater.from(mContext).inflate(R.layout.imprint_dialog, null); dialog.setContentView(inflate); @@ -220,8 +220,11 @@ public class DownloadDialog implements OnCollectionCallBackListener { inflate.findViewById(R.id.imprint_close).setOnClickListener(v -> dialog.dismiss()); LinearLayout content = inflate.findViewById(R.id.imprint_content); + ((TextView) inflate.findViewById(R.id.imprint_title)).setText(titleName); View head = LayoutInflater.from(mContext).inflate(R.layout.imprint_content_item, null); content.addView(head, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(30)); + LimitHeightLinearLayout imprintContainer = inflate.findViewById(R.id.imprint_container); + imprintContainer.setLimitHeight((int) (mContext.getResources().getDisplayMetrics().heightPixels * 0.6)); ArrayList list = gameEntity.getApk(); SettingsEntity settings = Config.getSettings(); @@ -237,6 +240,7 @@ public class DownloadDialog implements OnCollectionCallBackListener { content.addView(item, LayoutParams.MATCH_PARENT, DisplayUtils.dip2px(40)); } + // close line View view = new View(mContext); view.setBackgroundColor(mContext.getResources().getColor(R.color.text_5d5d5d)); diff --git a/app/src/main/java/com/gh/common/view/LimitHeightLinearLayout.java b/app/src/main/java/com/gh/common/view/LimitHeightLinearLayout.java new file mode 100644 index 0000000000..062da45d0a --- /dev/null +++ b/app/src/main/java/com/gh/common/view/LimitHeightLinearLayout.java @@ -0,0 +1,59 @@ +package com.gh.common.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.widget.LinearLayout; + +import com.gh.common.util.DisplayUtils; +import com.gh.gamecenter.R; + +/** + * Created by khy on 2/04/18. + */ + +public class LimitHeightLinearLayout extends LinearLayout { + + private int mLimitHeight; + + public LimitHeightLinearLayout(Context context) { + super(context); + } + + public LimitHeightLinearLayout(Context context, AttributeSet attrs) { + super(context, attrs); + if (attrs != null) { + TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.LimitHeightScrollView); + mLimitHeight = ta.getDimensionPixelSize(R.styleable.LimitHeightScrollView_maxHeight, DisplayUtils.dip2px(getContext(), 240)); + ta.recycle(); + } else { + mLimitHeight = DisplayUtils.dip2px(getContext(), 240); + } + } + + public LimitHeightLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int heightMode = MeasureSpec.getMode(heightMeasureSpec); + int heightSize = MeasureSpec.getSize(heightMeasureSpec); + + if (heightMode == MeasureSpec.EXACTLY + || heightMode == MeasureSpec.AT_MOST + || heightMode == MeasureSpec.UNSPECIFIED) { + heightSize = heightSize <= mLimitHeight ? heightSize + : mLimitHeight; + } + int maxHeightMeasureSpec = MeasureSpec.makeMeasureSpec(heightSize, + heightMode); + super.onMeasure(widthMeasureSpec, maxHeightMeasureSpec); + } + + public void setLimitHeight(int limitHeight) { + mLimitHeight = limitHeight; + requestLayout(); + } +} diff --git a/app/src/main/java/com/gh/common/view/MeasureLinearLayoutManager.java b/app/src/main/java/com/gh/common/view/MeasureLinearLayoutManager.java deleted file mode 100644 index 31176ad3e5..0000000000 --- a/app/src/main/java/com/gh/common/view/MeasureLinearLayoutManager.java +++ /dev/null @@ -1,62 +0,0 @@ -//package com.gh.common.view; -// -//import android.content.Context; -//import android.support.v7.widget.LinearLayoutManager; -//import android.support.v7.widget.RecyclerView; -//import android.view.View; -//import android.view.ViewGroup; -// -///** -// * Created by khy on 2017/3/30. -// */ -//public class MeasureLinearLayoutManager extends LinearLayoutManager { -// int height; -// private int[] mMeasuredDimension = new int[1]; -// -// public MeasureLinearLayoutManager(Context context) { -// super(context); -// } -// -// @Override -// public void onMeasure(RecyclerView.Recycler recycler, RecyclerView.State state, -// int widthSpec, int heightSpec) { -// super.onMeasure(recycler, state, widthSpec, heightSpec); -// height = 0; -// -// try { -// for (int i = 0; i < getItemCount(); i++) { -// measureScrapChild(recycler, i, -// View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), -// View.MeasureSpec.makeMeasureSpec(i, View.MeasureSpec.UNSPECIFIED), -// mMeasuredDimension); -// height = height + mMeasuredDimension[0]; -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } -// -// } -// -// private void measureScrapChild(RecyclerView.Recycler recycler, int position, int widthSpec, -// int heightSpec, int[] measuredDimension) throws Exception { -// View view = recycler.getViewForPosition(position); -// if (view.getVisibility() == View.GONE) { -// measuredDimension[0] = 0; -// return; -// } -// super.measureChildWithMargins(view, 0, 0); -// RecyclerView.LayoutParams p = (RecyclerView.LayoutParams) view.getLayoutParams(); -// int childHeightSpec = ViewGroup.getChildMeasureSpec( -// heightSpec, -// getPaddingTop() + getPaddingBottom() + getDecoratedTop(view) + getDecoratedBottom(view), -// p.height); -// -// view.measure(0, childHeightSpec); -// measuredDimension[0] = getDecoratedMeasuredHeight(view) + p.bottomMargin + p.topMargin; -// recycler.recycleView(view); -// } -// -// public int getRvHeight() { -// return height; -// } -//} diff --git a/app/src/main/res/layout/imprint_dialog.xml b/app/src/main/res/layout/imprint_dialog.xml index 28e8d180b7..a4b3a0c2d4 100644 --- a/app/src/main/res/layout/imprint_dialog.xml +++ b/app/src/main/res/layout/imprint_dialog.xml @@ -1,5 +1,6 @@ - @@ -20,6 +21,7 @@ android:src = "@drawable/imprint_close" /> - \ No newline at end of file + \ No newline at end of file