From 6540365e9f0e5aded89f164df011cea142ed51d6 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Mon, 9 Jan 2023 10:01:19 +0800 Subject: [PATCH] =?UTF-8?q?version:2.3=20fix:=20update:=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E6=9B=B4=E6=8D=A2=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=8F=AF=E6=8A=98=E5=8F=A0TextView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../aios/activity/main/MainActivity.java | 3 +- .../uiuios/aios/fragment/AppListFragment.java | 10 +- .../aios/fragment/custom/CustomFragment.java | 36 +- .../aios/network/NetInterfaceManager.java | 10 +- .../interceptor/RepeatRequestInterceptor.java | 36 +- .../uiuios/aios/service/main/MainService.java | 7 +- .../java/com/uiuios/aios/utils/ApkUtils.java | 14 + .../com/uiuios/aios/view/ExpandTextView.java | 135 ------- .../com/uiuios/aios/view/FoldTextView.java | 358 ++++++++++++++++++ .../drawable-hdpi/com_android_appstore.png | Bin 4654 -> 11400 bytes .../main/res/drawable-hdpi/com_uiui_sn.png | Bin 5137 -> 7088 bytes .../main/res/drawable-hdpi/systemapp_icon.png | Bin 15240 -> 11400 bytes app/src/main/res/layout/activity_articl.xml | 6 +- app/src/main/res/layout/item_article.xml | 19 +- app/src/main/res/values/attrs.xml | 11 + niceimageview/build.gradle | 20 +- 17 files changed, 453 insertions(+), 216 deletions(-) delete mode 100644 app/src/main/java/com/uiuios/aios/view/ExpandTextView.java create mode 100644 app/src/main/java/com/uiuios/aios/view/FoldTextView.java diff --git a/app/build.gradle b/app/build.gradle index 2e99f0f..3bed771 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiuios.aios" minSdkVersion 24 targetSdkVersion 29 - versionCode 8 - versionName "1.7" + versionCode 13 + versionName "2.2" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java index f9981b2..16457b7 100644 --- a/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiuios/aios/activity/main/MainActivity.java @@ -110,7 +110,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { mFragments.add(mCustomFragment); mMainPresenter.getSystemSettings(); - + mMainPresenter.getAdminSnSetting(); ArrayList desktopIcons = ApkUtils.queryFilterAppInfo(this); int x = 0; for (int i = 0; i <= desktopIcons.size(); i++) { @@ -318,7 +318,6 @@ public class MainActivity extends BaseActivity implements MainContact.MainView { } addData(); mMainPresenter.sendRunningInfo(); - mMainPresenter.getAdminSnSetting(); } private static final String ENABLED_NOTIFICATION_LISTENERS = "enabled_notification_listeners"; diff --git a/app/src/main/java/com/uiuios/aios/fragment/AppListFragment.java b/app/src/main/java/com/uiuios/aios/fragment/AppListFragment.java index 2463203..8e7ddfd 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/AppListFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/AppListFragment.java @@ -183,25 +183,19 @@ public class AppListFragment extends BaseFragment { ToastUtil.show("电话功能被禁用"); return; } else { - ApkUtils.openPackage(v.getContext(), desktopIcon.getPackageName()); + ApkUtils.openPackage(v.getContext(), desktopIcon.getPackageName(), desktopIcon.getClassName()); AppUsedTimeUtils.getInstance().setAppPackageName(desktopIcon.getPackageName()); AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); SendRunningApp(getActivity()); } break; default: - ApkUtils.openPackage(v.getContext(), desktopIcon.getPackageName()); + ApkUtils.openPackage(v.getContext(), desktopIcon.getPackageName(), desktopIcon.getClassName()); AppUsedTimeUtils.getInstance().setAppPackageName(desktopIcon.getPackageName()); AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); SendRunningApp(getActivity()); } } - if (desktopIcon != null) { - ApkUtils.openPackage(v.getContext(), desktopIcon.getPackageName()); - AppUsedTimeUtils.getInstance().setAppPackageName(desktopIcon.getPackageName()); - AppUsedTimeUtils.getInstance().setStartTime(System.currentTimeMillis()); - SendRunningApp(getActivity()); - } } @Override diff --git a/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java b/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java index 74c3689..9313264 100644 --- a/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java +++ b/app/src/main/java/com/uiuios/aios/fragment/custom/CustomFragment.java @@ -521,7 +521,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom cl_appstore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - ApkUtils.openApp(mContext, "com.uiuios.appstore"); + ApkUtils.openPackage(mContext, "com.uiuios.appstore"); } }); cl_wifi.setOnClickListener(new View.OnClickListener() { @@ -624,31 +624,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom } private void checkContact() { - NetInterfaceManager.getInstance().getContactList(new NetInterfaceManager.ContactCallback() { - @Override - public void setContact(List contactList) { -// if (contactList == null || contactList.size() == 0) { -// showNoData("温馨提示", "请在小程序上设置通讯录"); -// } else { -// -// } - } - - @Override - public void setEmergencyContact(List emergencyContact) { - - } - - @Override - public void setEmpty() { -// showNoData("温馨提示", "请在小程序上设置通讯录"); - } - - @Override - public void onComplete() { - startActivity(new Intent(mContext, ContactActivity.class)); - } - }); + startActivity(new Intent(mContext, ContactActivity.class)); } private void initData() { @@ -681,7 +657,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom } }); initAmap(); -// getAlarmClock(); + getAlarmClock(); } @Override @@ -698,7 +674,6 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom public void onResume() { super.onResume(); // setAlarm(); - getAlarmClock(); setSosNumber(); setQuickApp(); checkActivation(); @@ -707,8 +682,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom private void checkActivation() { int activation = Settings.Global.getInt(mContext.getContentResolver(), "uiui_activation", 0); if (activation == 0) { - tv_name.setText("未" + - "激活"); + tv_name.setText("未激活"); } else { tv_name.setText("已激活"); } @@ -763,7 +737,7 @@ public class CustomFragment extends BaseFragment implements CustomContact.Custom dialog.setMessage("绑定手机才能使用"); dialog.show(); } else { - ApkUtils.openApp(mContext, "com.uiui.health"); + ApkUtils.openPackage(mContext, "com.uiui.health"); SchemeUtils.openScheme(mContext, uri); } } diff --git a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java index 896a436..6e53237 100644 --- a/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiuios/aios/network/NetInterfaceManager.java @@ -355,7 +355,7 @@ public class NetInterfaceManager { public void getActivityList(boolean refresh, BehaviorSubject lifecycle, ActivitiesListCallback callback) { ConnectMode connectMode = ConnectMode.ONE_MINUTE; if (refresh) { - connectMode = ConnectMode.DEFAULT; + connectMode = ConnectMode.ONE_MINUTE; } if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_ACTIVITY_LIST, connectMode)) { getActivityList(lifecycle, callback); @@ -463,9 +463,9 @@ public class NetInterfaceManager { } public void getDemandList(boolean refresh, BehaviorSubject lifecycle, DemandListCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_MINUTE; + ConnectMode connectMode = ConnectMode.ONE_HOUR; if (refresh) { - connectMode = ConnectMode.DEFAULT; + connectMode = ConnectMode.ONE_MINUTE; } if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_DEMAND_LIST, connectMode)) { getDemandList(lifecycle, callback); @@ -581,9 +581,9 @@ public class NetInterfaceManager { } public void getHealthCode(boolean refresh, BehaviorSubject lifecycle, HealthCodeCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_MINUTE; + ConnectMode connectMode = ConnectMode.ONE_HOUR; if (refresh) { - connectMode = ConnectMode.DEFAULT; + connectMode = ConnectMode.ONE_MINUTE; } if (ConnectManager.getInstance().isNeedConnect(URLAddress.GET_HEALTH_CODE, connectMode)) { getHealthCode(lifecycle, callback); diff --git a/app/src/main/java/com/uiuios/aios/network/interceptor/RepeatRequestInterceptor.java b/app/src/main/java/com/uiuios/aios/network/interceptor/RepeatRequestInterceptor.java index 6adb389..49f12cc 100644 --- a/app/src/main/java/com/uiuios/aios/network/interceptor/RepeatRequestInterceptor.java +++ b/app/src/main/java/com/uiuios/aios/network/interceptor/RepeatRequestInterceptor.java @@ -13,9 +13,14 @@ import java.util.concurrent.ConcurrentHashMap; import okhttp3.Interceptor; import okhttp3.Protocol; import okhttp3.Request; +import okhttp3.RequestBody; import okhttp3.Response; +import okhttp3.ResponseBody; import okio.Buffer; +/** + * v1.0 2022-07-15 16:16:52 + */ public class RepeatRequestInterceptor implements Interceptor { private static final String TAG = RepeatRequestInterceptor.class.getSimpleName(); @@ -26,13 +31,18 @@ public class RepeatRequestInterceptor implements Interceptor { @Override public Response intercept(@NotNull Chain chain) throws IOException { Request request = chain.request(); + Response response = chain.proceed(request); + ResponseBody responseBody = response.body(); - Response response = chain.proceed(chain.request()); - String content = response.body().string(); - if (BuildConfig.DEBUG) - Log.e(TAG, "请求体返回:| Response:" + content); + //会消费请求,导致请求多次 + String content = responseBody.string(); +// Response copy = response.newBuilder().body(responseBody).build(); + ResponseBody copy = ResponseBody.create(responseBody.contentType(), content); + if (BuildConfig.DEBUG) { +// Log.e(TAG, "请求体返回:| Response: " + request.url().encodedPath() + "\t body: " + content); + } //相同的请求 - String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + request.body()); + String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + requestBodyToString(request.body())); long time = System.currentTimeMillis();//请求时间 try { if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) { @@ -48,7 +58,7 @@ public class RepeatRequestInterceptor implements Interceptor { log("注册请求:", requestKey, request); // RepeatRequestInterceptor.Builder builder = request.newBuilder(); // builder.addHeader("header", jsonObject.toString()); - return chain.proceed(request); + return response.newBuilder().body(copy).build(); } catch (IOException e) { Log.e(TAG, "intercept: " + e.getMessage()); throw e; @@ -78,8 +88,20 @@ public class RepeatRequestInterceptor implements Interceptor { } return buffer.readUtf8(); } catch (Exception e) { - return "-" + e.getMessage(); + return "-"; } } + private static String requestBodyToString(RequestBody body) { + try { + final Buffer buffer = new Buffer(); + body.writeTo(buffer); + if (buffer.size() > 4096) { + return "-too long"; + } + return buffer.readUtf8(); + } catch (Exception e) { + return "-"; + } + } } diff --git a/app/src/main/java/com/uiuios/aios/service/main/MainService.java b/app/src/main/java/com/uiuios/aios/service/main/MainService.java index 1b903b1..9684f18 100644 --- a/app/src/main/java/com/uiuios/aios/service/main/MainService.java +++ b/app/src/main/java/com/uiuios/aios/service/main/MainService.java @@ -23,9 +23,9 @@ import com.uiuios.aios.bean.AlarmClockData; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.NetInterfaceManager; import com.uiuios.aios.utils.ApkUtils; +import com.uiuios.aios.utils.AppUsedTimeUtils; import com.uiuios.aios.utils.CmdUtil; import com.uiuios.aios.utils.ForegroundAppUtil; -import com.uiuios.aios.utils.AppUsedTimeUtils; import com.uiuios.aios.utils.ToastUtil; import com.uiuios.aios.utils.Utils; @@ -110,6 +110,9 @@ public class MainService extends BaseService implements MainSContact.MainSView, if (mTimeChangedReceiver != null) { unregisterReceiver(mTimeChangedReceiver); } + if (lockScreenReceiver != null) { + unregisterReceiver(lockScreenReceiver); + } } @Override @@ -418,7 +421,7 @@ public class MainService extends BaseService implements MainSContact.MainSView, @Download.onTaskComplete void taskComplete(DownloadTask task) { //在这里处理任务完成的状态 - Log.e(TAG, "taskComplete: "+task.getFilePath() ); + Log.e(TAG, "taskComplete: " + task.getFilePath()); } @Download.onTaskFail diff --git a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java index e0c1766..50a61e6 100644 --- a/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java +++ b/app/src/main/java/com/uiuios/aios/utils/ApkUtils.java @@ -327,6 +327,20 @@ public class ApkUtils { return false; } + public static boolean openPackage(Context context, String packageName, String className) { + if (TextUtils.isEmpty(className)) { + return openPackage(context, packageName); + } + ComponentName cn = new ComponentName(packageName, className); + Intent intent = new Intent(); + intent.setComponent(cn); + if (context != null) { + context.startActivity(intent); + return true; + } + return false; + } + public static Context getPackageContext(Context context, String packageName) { Context pkgContext = null; if (context.getPackageName().equals(packageName)) { diff --git a/app/src/main/java/com/uiuios/aios/view/ExpandTextView.java b/app/src/main/java/com/uiuios/aios/view/ExpandTextView.java deleted file mode 100644 index cb14e1e..0000000 --- a/app/src/main/java/com/uiuios/aios/view/ExpandTextView.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.uiuios.aios.view; - -import android.content.Context; -import android.graphics.Rect; -import android.text.Layout; -import android.text.StaticLayout; -import android.util.AttributeSet; - -import androidx.annotation.Nullable; -import androidx.appcompat.widget.AppCompatTextView; - -public class ExpandTextView extends AppCompatTextView { - /** - * true:展开,false:收起 - */ - boolean mExpanded; - /** - * 状态回调 - */ - Callback mCallback; - /** - * 源文字内容 - */ - String mText = ""; - /** - * 最多展示的行数 - */ - final int maxLineCount = 3; - /** - * 省略文字 - */ - final String ellipsizeText = "..."; - - public ExpandTextView(Context context, @Nullable AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - // 文字计算辅助工具 - StaticLayout sl = new StaticLayout(mText, getPaint(), getMeasuredWidth() - getPaddingLeft() - getPaddingRight() - , Layout.Alignment.ALIGN_CENTER, 1, 0, true); - // 总计行数 - int lineCount = sl.getLineCount(); - if (lineCount > maxLineCount) { - if (mExpanded) { - setText(mText); - mCallback.onExpand(); - } else { - lineCount = maxLineCount; - - // 省略文字的宽度 - float dotWidth = getPaint().measureText(ellipsizeText); - - // 找出第 showLineCount 行的文字 - int start = sl.getLineStart(lineCount - 1); - int end = sl.getLineEnd(lineCount - 1); - String lineText = mText.substring(start, end); - - // 将第 showLineCount 行最后的文字替换为 ellipsizeText - int endIndex = 0; - for (int i = lineText.length() - 1; i >= 0; i--) { - String str = lineText.substring(i, lineText.length()); - // 找出文字宽度大于 ellipsizeText 的字符 - if (getPaint().measureText(str) >= dotWidth) { - endIndex = i; - break; - } - } - - // 新的第 showLineCount 的文字 - String newEndLineText = lineText.substring(0, endIndex) + ellipsizeText; - // 最终显示的文字 - setText(mText.substring(0, start) + newEndLineText); - - mCallback.onCollapse(); - } - } else { - setText(mText); - mCallback.onLoss(); - } - - // 重新计算高度 - int lineHeight = 0; - for (int i = 0; i < lineCount; i++) { - Rect lineBound = new Rect(); - sl.getLineBounds(i, lineBound); - lineHeight += lineBound.height(); - } - lineHeight += getPaddingTop() + getPaddingBottom(); - setMeasuredDimension(getMeasuredWidth(), lineHeight); - } - - /** - * 设置要显示的文字以及状态 - * @param text - * @param expanded true:展开,false:收起 - * @param callback - */ - public void setText(String text, boolean expanded, Callback callback) { - mText = text; - mExpanded = expanded; - mCallback = callback; - - // 设置要显示的文字,这一行必须要,否则 onMeasure 宽度测量不正确 - setText(text); - } - - /** - * 展开收起状态变化 - * @param expanded - */ - public void setChanged(boolean expanded) { - mExpanded = expanded; - requestLayout(); - } - - public interface Callback { - /** - * 展开状态 - */ - void onExpand(); - - /** - * 收起状态 - */ - void onCollapse(); - - /** - * 行数小于最小行数,不满足展开或者收起条件 - */ - void onLoss(); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/uiuios/aios/view/FoldTextView.java b/app/src/main/java/com/uiuios/aios/view/FoldTextView.java new file mode 100644 index 0000000..70c6bfa --- /dev/null +++ b/app/src/main/java/com/uiuios/aios/view/FoldTextView.java @@ -0,0 +1,358 @@ +package com.uiuios.aios.view; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.Rect; +import android.text.Layout; +import android.text.SpannableStringBuilder; +import android.text.Spanned; +import android.text.TextPaint; +import android.text.TextUtils; +import android.text.style.ForegroundColorSpan; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ViewConfiguration; +import android.view.ViewTreeObserver; +import android.widget.TextView; + +import androidx.appcompat.widget.AppCompatTextView; + +import com.uiuios.aios.R; + + +/** + * Created by zhangzhihao on 2018/6/28 10:26. + * 折叠textView + */ + +public class FoldTextView extends AppCompatTextView { + private static final String TAG = "FoldTextView"; + private static final String ELLIPSIZE_END = "..."; + private static final int MAX_LINE = 4; + private static final String EXPAND_TIP_TEXT = " 收起全文"; + private static final String FOLD_TIP_TEXT = "全文"; + private static final int TIP_COLOR = 0xFFFFFFFF; + /** + * 全文显示的位置 + */ + private static final int END = 0; + private int mShowMaxLine; + /** + * 折叠文本 + */ + private String mFoldText; + /** + * 展开文本 + */ + private String mExpandText; + /** + * 原始文本 + */ + private CharSequence mOriginalText; + /** + * 是否展开 + */ + private boolean isExpand; + /** + * 全文显示的位置 + */ + private int mTipGravity; + /** + * 全文文字的颜色 + */ + private int mTipColor; + /** + * 全文是否可点击 + */ + private boolean mTipClickable; + private boolean flag; + private Paint mPaint; + + /** + * 展开后是否显示文字提示 + */ + private boolean isShowTipAfterExpand; + + + /** + * 提示文字坐标 + */ + float minX; + float maxX; + float minY; + float maxY; + /** + * 收起全文不在一行显示时 + */ + float middleY; + /** + * 原始文本的行数 + */ + int originalLineCount; + + /** + * 点击时间 + */ + private long clickTime; + /** + * 是否超过最大行数 + */ + private boolean isOverMaxLine; + private onTipClickListener onTipClickListener; + + + public FoldTextView(Context context) { + this(context, null); + } + + + public FoldTextView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + @Override + public void setTextColor(int color) { + super.setTextColor(color); + } + + public FoldTextView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + mShowMaxLine = MAX_LINE; + if (attrs != null) { + TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.FoldTextView); + mShowMaxLine = arr.getInt(R.styleable.FoldTextView_showMaxLine, MAX_LINE); + mTipGravity = arr.getInt(R.styleable.FoldTextView_tipGravity, END); + mTipColor = arr.getColor(R.styleable.FoldTextView_tipColor, TIP_COLOR); + mTipClickable = arr.getBoolean(R.styleable.FoldTextView_tipClickable, false); + mFoldText = arr.getString(R.styleable.FoldTextView_foldText); + mExpandText = arr.getString(R.styleable.FoldTextView_expandText); + isShowTipAfterExpand = arr.getBoolean(R.styleable.FoldTextView_showTipAfterExpand, false); + arr.recycle(); + } + if (TextUtils.isEmpty(mExpandText)) { + mExpandText = EXPAND_TIP_TEXT; + } + if (TextUtils.isEmpty(mFoldText)) { + mFoldText = FOLD_TIP_TEXT; + } + if (mTipGravity == END) { + mFoldText = " ".concat(mFoldText); + } + mPaint = new Paint(); + mPaint.setTextSize(getTextSize()); + mPaint.setColor(mTipColor); + } + + @Override + public void setText(final CharSequence text, final TextView.BufferType type) { + mOriginalText = text; + if (TextUtils.isEmpty(text) || mShowMaxLine == 0) { + super.setText(text, type); + } else if (isExpand) { + //文字展开 + SpannableStringBuilder spannable = new SpannableStringBuilder(mOriginalText); + if (isShowTipAfterExpand) { + spannable.append(mExpandText); + spannable.setSpan(new ForegroundColorSpan(mTipColor), spannable.length() - mExpandText.length(), spannable.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + super.setText(spannable, type); + int mLineCount = getLineCount(); + Layout layout = getLayout(); + minX = getPaddingLeft() + layout.getPrimaryHorizontal(spannable.toString().lastIndexOf(mExpandText.charAt(0)) - 1); + maxX = getPaddingLeft() + layout.getSecondaryHorizontal(spannable.toString().lastIndexOf(mExpandText.charAt(mExpandText.length() - 1)) + 1); + Rect bound = new Rect(); + if (mLineCount > originalLineCount) { + //不在同一行 + layout.getLineBounds(originalLineCount - 1, bound); + minY = getPaddingTop() + bound.top; + middleY = minY + getPaint().getFontMetrics().descent - getPaint().getFontMetrics().ascent; + maxY = middleY + getPaint().getFontMetrics().descent - getPaint().getFontMetrics().ascent; + } else { + //同一行 + layout.getLineBounds(originalLineCount - 1, bound); + minY = getPaddingTop() + bound.top; + maxY = minY + getPaint().getFontMetrics().descent - getPaint().getFontMetrics().ascent; + } + } else { + if (!flag) { + getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + getViewTreeObserver().removeOnPreDrawListener(this); + flag = true; + formatText(text, type); + return true; + } + }); + } else { + formatText(text, type); + } + } + } + + private void formatText(CharSequence text, final TextView.BufferType type) { + Layout layout = getLayout(); + if (layout == null || !layout.getText().equals(mOriginalText)) { + super.setText(mOriginalText, type); + layout = getLayout(); + } + if (layout == null) { + getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + getViewTreeObserver().removeOnGlobalLayoutListener(this); + translateText(getLayout(), type); + } + }); + } else { + translateText(layout, type); + } + } + + private void translateText(Layout layout, TextView.BufferType type) { + originalLineCount = layout.getLineCount(); + if (layout.getLineCount() > mShowMaxLine) { + isOverMaxLine = true; + SpannableStringBuilder span = new SpannableStringBuilder(); + int start = layout.getLineStart(mShowMaxLine - 1); + int end = layout.getLineEnd(mShowMaxLine - 1); + if (mTipGravity == END) { + TextPaint paint = getPaint(); + StringBuilder builder = new StringBuilder(ELLIPSIZE_END).append(mFoldText); + end -= paint.breakText(mOriginalText, start, end, false, paint.measureText(builder.toString()), null); + float x = getWidth() - getPaddingLeft() - getPaddingRight() - getTextWidth(mFoldText); + while (layout.getPrimaryHorizontal(end - 1) + getTextWidth(mOriginalText.subSequence(end - 1, end).toString()) < x) { + end++; + } + end--; + } else { + end--; + } + CharSequence ellipsize = mOriginalText.subSequence(0, end); + span.append(ellipsize); + span.append(ELLIPSIZE_END); + if (mTipGravity != END) { + span.append("\n"); + } + super.setText(span, type); + } else { + isOverMaxLine = false; + } + } + + public void setShowMaxLine(int mShowMaxLine) { + this.mShowMaxLine = mShowMaxLine; + } + + public void setFoldText(String mFoldText) { + this.mFoldText = mFoldText; + } + + public void setExpandText(String mExpandText) { + this.mExpandText = mExpandText; + } + + public void setTipGravity(int mTipGravity) { + this.mTipGravity = mTipGravity; + } + + public void setTipColor(int mTipColor) { + this.mTipColor = mTipColor; + } + + public void setTipClickable(boolean mTipClickable) { + this.mTipClickable = mTipClickable; + } + + + public void setShowTipAfterExpand(boolean showTipAfterExpand) { + isShowTipAfterExpand = showTipAfterExpand; + } + + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + if (isOverMaxLine && !isExpand) { + //折叠 + if (mTipGravity == END) { + minX = getWidth() - getPaddingLeft() - getPaddingRight() - getTextWidth(mFoldText); + maxX = getWidth() - getPaddingLeft() - getPaddingRight(); + minY = getHeight() - (getPaint().getFontMetrics().descent - getPaint().getFontMetrics().ascent) - getPaddingBottom(); + maxY = getHeight() - getPaddingBottom(); + canvas.drawText(mFoldText, minX, + getHeight() - getPaint().getFontMetrics().descent - getPaddingBottom(), mPaint); + } else { + minX = getPaddingLeft(); + maxX = minX + getTextWidth(mFoldText); + minY = getHeight() - (getPaint().getFontMetrics().descent - getPaint().getFontMetrics().ascent) - getPaddingBottom(); + maxY = getHeight() - getPaddingBottom(); + canvas.drawText(mFoldText, minX, getHeight() - getPaint().getFontMetrics().descent - getPaddingBottom(), mPaint); + } + } + } + + private float getTextWidth(String text) { + Paint paint = getPaint(); + return paint.measureText(text); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + if (mTipClickable) { + switch (event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + clickTime = System.currentTimeMillis(); + if (!isClickable()) { + if (isInRange(event.getX(), event.getY())) { + return true; + } + } + break; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + long delTime = System.currentTimeMillis() - clickTime; + clickTime = 0L; + if (delTime < ViewConfiguration.getTapTimeout() && isInRange(event.getX(), event.getY())) { + isExpand = !isExpand; + setText(mOriginalText); + if (onTipClickListener != null) { + onTipClickListener.onTipClick(isExpand); + } + return true; + } + break; + default: + break; + } + } + return super.onTouchEvent(event); + } + + + private boolean isInRange(float x, float y) { + if (minX < maxX) { + return x >= minX && x <= maxX && y >= minY && y <= maxY; + } else { + return x <= maxX && y >= middleY && y <= maxY || x >= minX && y >= minY && y <= middleY; + } + } + + public FoldTextView setExpand(boolean expand) { + isExpand = expand; + return this; + } + + + public FoldTextView setOnTipClickListener(FoldTextView.onTipClickListener onTipClickListener) { + this.onTipClickListener = onTipClickListener; + return this; + } + + public interface onTipClickListener { + void onTipClick(boolean flag); + } +} diff --git a/app/src/main/res/drawable-hdpi/com_android_appstore.png b/app/src/main/res/drawable-hdpi/com_android_appstore.png index 9b06c7c4069a77c17c4358bb918659ef742978a6..ec5d43450e486439752210123159d2393b66f353 100644 GIT binary patch delta 10839 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 WS51&-T*+lPr_k3nMl@e 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 BHHQEI delta 4527 zcmZ{ocQo4%)W)r%qO~H_h)t{{b}4Ga-bz&|V(&&#)cDqjQJY#d6ScKQYqVBvs#c8} zwL&Si_wL*GocI0n_s4ynbMCpH^ZfnXYMEphSB#;)#w{uqDk37HTUweZV+Th$`~MD*{Vz5ZPO1Xr z^GLW75z%6`P|7C$Gn-Ft`dCb4U4OKw;2TIenbY4yZ;?@YXu7CyvQy%4y4s|3#^l9g zZ0Vu6wQuWL??l-OIt`sc3U3doCBXE~k?UG7Bfd)~b*4m+36y;ZTwv0gY;8N+iC>}f zq!%$y=L>4v<(f{P4?J%>d3rME$CnE5-ZT%(nbN)l5x8xoj10zYmpb$g=`Uh>qc5U) zre_+TrSF*0RSC>%H>W#eznp!MFA8r=Jr&=(ns(Ps$E}GaZ*yIXj`B%NLJ$*u#Zfu+ZIP;XIs{z1byc4ox zwz?{6mjWsa0uoN8&_8mxQO&uh+QoS#oSt+YgCNPSjOc|SlsrTTc!RMEJtOwcv!?w~ z%qqPjaQ$csfmjrP^Fgy>{42|U<~oDO_DMBjG8lr_K-nUb*V>dBe$G6Kms+xk*nx-W zisr5bI)sARlzpdVE-jA$a2B`K#X7ti;0IdThsw|*vf$7GFTb0!D+-T54KAPkWt1%0 zVc<#)0*i}rGXj(irq=D6C?mY1mllLsrh*go%wY`2Fqma7*x=9?OHrI?ksZX8@aPvWy5pu$>4b+twJxHUF*44lf9%f~9>eTg&pti9cD&d^G9|PS%V_ zRdCX!f?+(7xD?wmlX5|Edu|(b0=5%PMnc?tN{F4Rv7?BLj6B_OVrctt^SMYrgP==w z5YavURgbzlpsw*(x<$3);G42#`+6O!Ow&DMZ?*&Ji~+1uelWz~{*@2+g4pQl!k;NR zGSZNrm`;{Tt6=sR=H7ab+3Jg}xsg9dXPD@p4@pT$@A~g@Hd`SktE}()hVgkX=J-SJ z6=wN2J>Tj`7qu9Q&_>0e<#^Ssa^|Si*q+P@>>l6K2IN|q$;q46-JJxi?;7YMUl|(m zFjLzetPYk|RCG?5Sr00tOiSbv_&oL=g#_-joFHXo`_;zW+|Z&mhC%zQdY&=rFIBfR zhJ%!_kU_lwNfKrmn~tRj#0aQlEavLs#BRFQ;m!p0zE6jvxR1D>lap^wm$2aIS{mle zy3YR-FqpZ;D|owY;l62mNlTf}MblfigWsabu>+kdNj@K-({a;q^HTd6*CNx%7%NXt zp%IhpV!H+Ni4m2av$|Z%%$k>DCCGLXMuP}FI_VqYT_Qiw{ezDjv$p9?Sm3J3_{@n( zpUJ#4fmA`d4E$Z`Jyz!NG?)ZDG$%x6F@$Le$fR)e07d@XDeP{A3Kh{^?^4S3{$-lr z`|+i~V{s>~kxBEiQ1hclVjC!!=Wl9kB)YYG;FfmXJ7-DjD5ddGO?jnTo^h;}MaY82 zQYh(s3k>%|(&9%7(X-RSW#$8Dn0W)`vrpu8lM}ls7^CwNWx`i1{eCU?OiQ+5ZtUp$sgCDnib$|0T|?dIr->Y6SCe1vlc)m0{~UDY`10(pmx^ zN%%b^KC@L7_MY)8KDZ#VY=>`dT?#0g@Mn~1!lY)JplUEego>9VL=!0=sph+&oLv6` z7cpqb=NHoj+Cv67Opqd7Ht3XTcaDMUBv7AKI~m(iFj>^!yE8(qF`zwmw#_TC^PH#c zo}bwsE_av0TcEuZ(mX6Q`yTZZ3%62n@lgZE41aZTlN5DeQRY3Ww=?!UTU5uuz6uXb z01Gxt-f*zz&FR8rve9c6_^%E&_7Er?eTSh*tk9o2Q@Q0OT{SbK!HX(2K}AV!qf&b;2z`=dFRSR% zvc?!K_y_-{sc(5@ z#l^K;G1jZ{LTl!I-mDn?ky25O@z?R_oD97PThDEDhUvnvLWEhgNp-btIJU>|8`jnV z^p7%4XB=@UM{d4gdN^j?v7`_uG|ME0Y!zPeGWp#_;#}E8+CC1rrs`9-)ZDPLE}=za z|9;*QLuY*tagZe=W`^cUW@NANXZ9@TS7^5yPwt(5RrRH&ea&XFVb4ljjLwxtWgH?oJ|BAB z{tj06?&b6|S-jYNMkM*^RqpStnVj%2hk0)+&n^ig9xIn?`HpdjbFY

J>yps4YIK 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 diff --git a/app/src/main/res/drawable-hdpi/systemapp_icon.png b/app/src/main/res/drawable-hdpi/systemapp_icon.png index 65938ac47f680e9d1cd564bbbb2a3d5208ea1316..ec5d43450e486439752210123159d2393b66f353 100644 GIT binary patch delta 10804 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 Mgra!0sBy^u17zoHApigX diff --git a/app/src/main/res/layout/activity_articl.xml b/app/src/main/res/layout/activity_articl.xml index 30f8c74..845f780 100644 --- a/app/src/main/res/layout/activity_articl.xml +++ b/app/src/main/res/layout/activity_articl.xml @@ -79,9 +79,7 @@ android:id="@+id/tv_content" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginStart="@dimen/dp_16" - android:layout_marginTop="@dimen/dp_16" - android:layout_marginEnd="@dimen/dp_16" + android:layout_margin="@dimen/dp_16" android:textSize="@dimen/sp_13" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -89,6 +87,4 @@ app:layout_constraintTop_toBottomOf="@+id/iv_img" /> - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_article.xml b/app/src/main/res/layout/item_article.xml index 3a135eb..94ff28e 100644 --- a/app/src/main/res/layout/item_article.xml +++ b/app/src/main/res/layout/item_article.xml @@ -22,23 +22,30 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_4" android:layout_marginEnd="@dimen/dp_8" - android:text="中医专家谈寒露养生 “晨饮盐水晚喝蜂蜜”更健康" + android:text="" android:textColor="@color/black" android:textSize="@dimen/sp_12" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/iv_img" app:layout_constraintTop_toTopOf="@+id/iv_img" /> - + app:layout_constraintTop_toBottomOf="@+id/tv_title" + app:showMaxLine="4" + app:showTipAfterExpand="true" + app:tipClickable="true" + app:tipColor="@color/colorPrimary" + app:tipGravity="0" /> - \ No newline at end of file diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index dc50d2c..e44bce3 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -16,6 +16,17 @@ + + + + + + + + + + + 1.0 diff --git a/niceimageview/build.gradle b/niceimageview/build.gradle index fc0ddf3..1a8134b 100644 --- a/niceimageview/build.gradle +++ b/niceimageview/build.gradle @@ -11,19 +11,13 @@ android { } buildTypes { - zhanRuiRelease{ - - } - zhanRuiDebug{ - - } - debug{ - - } - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } + MTKAndroid12Debug{} + MTKAndroid12Release{} + zhanRuiDebug {} + zhanRuiRelease {} + zhanRuiUserdebug{} + debug {} + release {} } }