From 3fe305ab233a58847efc0a66ccc72541cf33d3fc Mon Sep 17 00:00:00 2001 From: TrillGates Date: Thu, 15 Jul 2021 14:10:59 +0800 Subject: [PATCH] get shake state. --- .../presenter/StatusBarPresenter.java | 1 + .../com/ic/launcher/view/MarqueeView.java | 9 ++- app/src/main/res/layout/item_status_bar.xml | 57 +++++++++---------- 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java b/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java index 3fc78e0..3da4f50 100644 --- a/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java +++ b/app/src/main/java/com/ic/launcher/presenter/StatusBarPresenter.java @@ -71,6 +71,7 @@ public class StatusBarPresenter extends StatusBarBasePresenter { getSilentState(); checkIcTalkMsg(); checkHasMissCall(); + getShakeState(); observerContentChange(); } diff --git a/app/src/main/java/com/ic/launcher/view/MarqueeView.java b/app/src/main/java/com/ic/launcher/view/MarqueeView.java index f6b165b..247928b 100644 --- a/app/src/main/java/com/ic/launcher/view/MarqueeView.java +++ b/app/src/main/java/com/ic/launcher/view/MarqueeView.java @@ -9,6 +9,8 @@ import com.ic.iclooger.ICLogger; public class MarqueeView extends ViewGroup { + private int defaultWidth = 0; + public MarqueeView(Context context) { this(context, null); } @@ -61,7 +63,9 @@ public class MarqueeView extends ViewGroup { int parentWidth = MeasureSpec.makeMeasureSpec(totalWidth, MeasureSpec.EXACTLY); setMeasuredDimension(parentWidth, heightMeasureSpec); //测量完以后,判断宽度是否够用 - int defaultWidth = MeasureSpec.getSize(widthMeasureSpec); + if (defaultWidth == 0) { + defaultWidth = MeasureSpec.getSize(widthMeasureSpec); + } //如果不够用则滚动,如果够用则不滚动 ICLogger.d("default width == > " + totalWidth + " real width == > " + defaultWidth); removeCallbacks(scrollTask); @@ -99,6 +103,9 @@ public class MarqueeView extends ViewGroup { } //拿到它的位置 Position position = (Position) item.getTag(); + if (position == null) { + continue; + } position.left -= stepDx; position.right = position.left + item.getMeasuredWidth(); //检查位置是否超了 diff --git a/app/src/main/res/layout/item_status_bar.xml b/app/src/main/res/layout/item_status_bar.xml index 8d399e6..5eced81 100644 --- a/app/src/main/res/layout/item_status_bar.xml +++ b/app/src/main/res/layout/item_status_bar.xml @@ -11,13 +11,32 @@ android:layout_height="match_parent" android:layout_alignParentLeft="true" /> + + + + + - + - - - - - - - \ No newline at end of file -- 2.17.1