Merge "Delayable marquee TextView" into tm-qpr-dev am: 1656ca704a am: 760e17a624

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18740076

Change-Id: Id0b2ff535bfc1067aa7a526f66f2a24bb2023a4c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Fabian Kozynski
2022-06-08 19:21:47 +00:00
committed by Automerger Merge Worker
4 changed files with 86 additions and 2 deletions

View File

@@ -28,7 +28,7 @@
android:importantForAccessibility="no"
android:layout_gravity="center_vertical | start">
<com.android.systemui.util.SafeMarqueeTextView
<com.android.systemui.util.DelayableMarqueeTextView
android:id="@+id/tile_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -41,7 +41,7 @@
android:importantForAccessibility="no"
android:textAppearance="@style/TextAppearance.QS.TileLabel"/>
<com.android.systemui.util.SafeMarqueeTextView
<com.android.systemui.util.DelayableMarqueeTextView
android:id="@+id/app_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -193,5 +193,9 @@
<declare-styleable name="DreamOverlayDotImageView">
<attr name="dotColor" format="color" />
</declare-styleable>
<declare-styleable name="DelayableMarqueeTextView">
<attr name="marqueeDelay" format="integer" />
</declare-styleable>
</resources>

View File

@@ -283,6 +283,7 @@ public class PagedTileLayout extends ViewPager implements QSTileLayout {
.inflate(R.layout.qs_paged_page, this, false);
page.setMinRows(mMinRows);
page.setMaxColumns(mMaxColumns);
page.setSelected(false);
return page;
}

View File

@@ -0,0 +1,79 @@
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.util
import android.content.Context
import android.util.AttributeSet
import com.android.systemui.R
class DelayableMarqueeTextView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0,
defStyleRes: Int = 0
) : SafeMarqueeTextView(context, attrs, defStyleAttr, defStyleRes) {
var marqueeDelay: Long = DEFAULT_MARQUEE_DELAY
private var wantsMarquee = false
private var marqueeBlocked = true
private val enableMarquee = Runnable {
if (wantsMarquee) {
marqueeBlocked = false
startMarquee()
}
}
init {
val typedArray = context.theme.obtainStyledAttributes(
attrs,
R.styleable.DelayableMarqueeTextView,
defStyleAttr,
defStyleRes
)
marqueeDelay = typedArray.getInteger(
R.styleable.DelayableMarqueeTextView_marqueeDelay,
DEFAULT_MARQUEE_DELAY.toInt()
).toLong()
typedArray.recycle()
}
override fun startMarquee() {
if (!isSelected) {
return
}
wantsMarquee = true
if (marqueeBlocked) {
if (handler?.hasCallbacks(enableMarquee) == false) {
postDelayed(enableMarquee, marqueeDelay)
}
return
}
super.startMarquee()
}
override fun stopMarquee() {
handler?.removeCallbacks(enableMarquee)
wantsMarquee = false
marqueeBlocked = true
super.stopMarquee()
}
companion object {
const val DEFAULT_MARQUEE_DELAY = 2000L
}
}