diff options
37 files changed, 11048 insertions, 210 deletions
diff --git a/Android.bp b/Android.bp index 0d2caff8b42f..868886789761 100644 --- a/Android.bp +++ b/Android.bp @@ -687,6 +687,7 @@ java_defaults { static_libs: [ "apex_aidl_interface-java", + "suspend_control_aidl_interface-java", "framework-protos", "game-driver-protos", "android.hidl.base-V1.0-java", diff --git a/api/test-current.txt b/api/test-current.txt index 075963ef5efd..144e5f5c8f53 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -1532,6 +1532,15 @@ package android.telephony { method public void setVoiceRoamingType(int); } + public final class SmsManager { + method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String); + field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1 + field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0 + field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3 + field public static final int SMS_CATEGORY_PREMIUM_SHORT_CODE = 4; // 0x4 + field public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; // 0x2 + } + public class TelephonyManager { method public int getCarrierIdListVersion(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); diff --git a/core/java/android/net/util/SocketUtils.java b/core/java/android/net/util/SocketUtils.java index d9bcb3ce0d8f..489a2922f70e 100644 --- a/core/java/android/net/util/SocketUtils.java +++ b/core/java/android/net/util/SocketUtils.java @@ -70,7 +70,7 @@ public final class SocketUtils { @NonNull public static SocketAddress makePacketSocketAddress(int protocol, int ifIndex) { return new PacketSocketAddress( - (short) protocol /* sll_protocol */, + protocol /* sll_protocol */, ifIndex /* sll_ifindex */, null /* sll_addr */); } @@ -81,7 +81,7 @@ public final class SocketUtils { @NonNull public static SocketAddress makePacketSocketAddress(int ifIndex, @NonNull byte[] hwAddr) { return new PacketSocketAddress( - (short) 0 /* sll_protocol */, + 0 /* sll_protocol */, ifIndex /* sll_ifindex */, hwAddr /* sll_addr */); } diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index 7f60b9cec284..135138030e43 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -246,27 +246,6 @@ interface INetworkManagementService **/ /** - * Return global network statistics summarized at an interface level, - * without any UID-level granularity. - */ - NetworkStats getNetworkStatsSummaryDev(); - NetworkStats getNetworkStatsSummaryXt(); - - /** - * Return detailed network statistics with UID-level granularity, - * including interface and tag details. - */ - NetworkStats getNetworkStatsDetail(); - - /** - * Return detailed network statistics for the requested UID and interfaces, - * including interface and tag details. - * @param uid UID to obtain statistics for, or {@link NetworkStats#UID_ALL}. - * @param ifaces Interfaces to obtain statistics for, or {@link NetworkStats#INTERFACES_ALL}. - */ - NetworkStats getNetworkStatsUidDetail(int uid, in String[] ifaces); - - /** * Return summary of network statistics all tethering interfaces. */ NetworkStats getNetworkStatsTethering(int how); diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java index 78331a1566c5..b33b4a07c134 100644 --- a/core/java/android/view/KeyEvent.java +++ b/core/java/android/view/KeyEvent.java @@ -1893,12 +1893,13 @@ public class KeyEvent extends InputEvent implements Parcelable { public static final boolean isWakeKey(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: + case KeyEvent.KEYCODE_CAMERA: case KeyEvent.KEYCODE_MENU: - case KeyEvent.KEYCODE_WAKEUP: case KeyEvent.KEYCODE_PAIRING: case KeyEvent.KEYCODE_STEM_1: case KeyEvent.KEYCODE_STEM_2: case KeyEvent.KEYCODE_STEM_3: + case KeyEvent.KEYCODE_WAKEUP: return true; } return false; diff --git a/core/java/com/android/internal/os/KernelWakelockReader.java b/core/java/com/android/internal/os/KernelWakelockReader.java index 86b2a90dd64e..df8c6d021466 100644 --- a/core/java/com/android/internal/os/KernelWakelockReader.java +++ b/core/java/com/android/internal/os/KernelWakelockReader.java @@ -16,8 +16,13 @@ package com.android.internal.os; import android.os.Process; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.os.ServiceManager.ServiceNotFoundException; import android.os.StrictMode; import android.os.SystemClock; +import android.system.suspend.ISuspendControlService; +import android.system.suspend.WakeLockInfo; import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; @@ -58,6 +63,7 @@ public class KernelWakelockReader { private final String[] mProcWakelocksName = new String[3]; private final long[] mProcWakelocksData = new long[3]; + private ISuspendControlService mSuspendControlService = null; /** * Reads kernel wakelock stats and updates the staleStats with the new information. @@ -117,7 +123,52 @@ public class KernelWakelockReader { } } } - return parseProcWakelocks(buffer, len, wakeup_sources, staleStats); + + updateVersion(staleStats); + + parseProcWakelocks(buffer, len, wakeup_sources, staleStats); + + if (mSuspendControlService == null) { + try { + mSuspendControlService = ISuspendControlService.Stub.asInterface( + ServiceManager.getServiceOrThrow("suspend_control")); + } catch (ServiceNotFoundException e) { + Slog.wtf(TAG, "Required service suspend_control not available", e); + } + } + + try { + WakeLockInfo[] wlStats = mSuspendControlService.getWakeLockStats(); + getNativeWakelockStats(wlStats, staleStats); + } catch (RemoteException e) { + Slog.wtf(TAG, "Failed to obtain wakelock stats from ISuspendControlService", e); + } + + return removeOldStats(staleStats); + } + + /** + * Reads native wakelock stats from SystemSuspend and updates staleStats with the new + * information. + * @param staleStats Existing object to update. + * @return the updated stats. + */ + @VisibleForTesting + public KernelWakelockStats getNativeWakelockStats(WakeLockInfo[] wlStats, + final KernelWakelockStats staleStats) { + for (WakeLockInfo info : wlStats) { + if (!staleStats.containsKey(info.name)) { + staleStats.put(info.name, new KernelWakelockStats.Entry((int) info.activeCount, + info.totalTime, sKernelWakelockUpdateVersion)); + } else { + KernelWakelockStats.Entry kwlStats = staleStats.get(info.name); + kwlStats.mCount = (int) info.activeCount; + kwlStats.mTotalTime = info.totalTime; + kwlStats.mVersion = sKernelWakelockUpdateVersion; + } + } + + return staleStats; } /** @@ -138,7 +189,6 @@ public class KernelWakelockReader { startIndex = endIndex = i + 1; synchronized(this) { - sKernelWakelockUpdateVersion++; while (endIndex < len) { for (endIndex=startIndex; endIndex < len && wlBuffer[endIndex] != '\n' && wlBuffer[endIndex] != '\0'; @@ -199,16 +249,35 @@ public class KernelWakelockReader { startIndex = endIndex + 1; } - // Don't report old data. - Iterator<KernelWakelockStats.Entry> itr = staleStats.values().iterator(); - while (itr.hasNext()) { - if (itr.next().mVersion != sKernelWakelockUpdateVersion) { - itr.remove(); - } - } - - staleStats.kernelWakelockVersion = sKernelWakelockUpdateVersion; return staleStats; } } + + /** + * Increments sKernelWakelockUpdateVersion and updates the version in staleStats. + * @param staleStats Existing object to update. + * @return the updated stats. + */ + @VisibleForTesting + public KernelWakelockStats updateVersion(KernelWakelockStats staleStats) { + sKernelWakelockUpdateVersion++; + staleStats.kernelWakelockVersion = sKernelWakelockUpdateVersion; + return staleStats; + } + + /** + * Removes old stats from staleStats. + * @param staleStats Existing object to update. + * @return the updated stats. + */ + @VisibleForTesting + public KernelWakelockStats removeOldStats(final KernelWakelockStats staleStats) { + Iterator<KernelWakelockStats.Entry> itr = staleStats.values().iterator(); + while (itr.hasNext()) { + if (itr.next().mVersion != sKernelWakelockUpdateVersion) { + itr.remove(); + } + } + return staleStats; + } } diff --git a/core/proto/android/stats/dnsresolver/dns_resolver.proto b/core/proto/android/stats/dnsresolver/dns_resolver.proto index b7bf3848d921..9eaabfbca463 100644 --- a/core/proto/android/stats/dnsresolver/dns_resolver.proto +++ b/core/proto/android/stats/dnsresolver/dns_resolver.proto @@ -67,6 +67,7 @@ enum NsRcode { // NS_R_BADSIG = 16, NS_R_BADKEY = 17; NS_R_BADTIME = 18; + NS_R_INTERNAL_ERROR = 254; NS_R_TIMEOUT = 255; } diff --git a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java index 4e4bb350739d..008085e38dbf 100644 --- a/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java +++ b/core/tests/coretests/src/com/android/internal/os/KernelWakelockReaderTest.java @@ -13,14 +13,17 @@ * License for the specific language governing permissions and limitations under * the License. */ + package com.android.internal.os; -import android.support.test.filters.SmallTest; +import androidx.test.filters.SmallTest; import junit.framework.TestCase; import java.nio.charset.Charset; +import android.system.suspend.WakeLockInfo; + public class KernelWakelockReaderTest extends TestCase { /** * Helper class that builds the mock Kernel module file /d/wakeup_sources. @@ -57,6 +60,39 @@ public class KernelWakelockReaderTest extends TestCase { } } + /** + * Helper method to create WakeLockInfo object. + * @param totalTime is time in microseconds. + * @return the created WakeLockInfo object. + */ + private WakeLockInfo createWakeLockInfo(String name, int activeCount, long totalTime) { + WakeLockInfo info = new WakeLockInfo(); + info.name = name; + info.pid = 1; + info.activeCount = activeCount; + info.isActive = true; + info.activeSince = 0; + info.lastChange = 0; + info.maxTime = 0; + info.totalTime = totalTime; + return info; + } + + /** + * Helper method for KernelWakeLockReader::readKernelWakelockStats(...) + * @param staleStats existing stats to update. + * @param buffer representation of mock kernel module file /d/wakeup_sources. + * @param wlStats mock WakeLockInfo list returned from ISuspendControlService. + * @return the updated stats. + */ + private KernelWakelockStats readKernelWakelockStats(KernelWakelockStats staleStats, + byte[] buffer, WakeLockInfo[] wlStats) { + mReader.updateVersion(staleStats); + mReader.parseProcWakelocks(buffer, buffer.length, true, staleStats); + mReader.getNativeWakelockStats(wlStats, staleStats); + return mReader.removeOldStats(staleStats); + } + private KernelWakelockReader mReader; @Override @@ -65,18 +101,22 @@ public class KernelWakelockReaderTest extends TestCase { mReader = new KernelWakelockReader(); } +// ------------------------- Kernel Wakelock Stats Test ------------------------ @SmallTest public void testParseEmptyFile() throws Exception { KernelWakelockStats staleStats = mReader.parseProcWakelocks(new byte[0], 0, true, new KernelWakelockStats()); + assertTrue(staleStats.isEmpty()); } @SmallTest public void testOnlyHeader() throws Exception { byte[] buffer = new ProcFileBuilder().getBytes(); + KernelWakelockStats staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, new KernelWakelockStats()); + assertTrue(staleStats.isEmpty()); } @@ -85,9 +125,12 @@ public class KernelWakelockReaderTest extends TestCase { byte[] buffer = new ProcFileBuilder() .addLine("Wakelock", 34, 123) // Milliseconds .getBytes(); + KernelWakelockStats staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, new KernelWakelockStats()); + assertEquals(1, staleStats.size()); + assertTrue(staleStats.containsKey("Wakelock")); KernelWakelockStats.Entry entry = staleStats.get("Wakelock"); @@ -101,9 +144,12 @@ public class KernelWakelockReaderTest extends TestCase { .addLine("Wakelock", 1, 10) .addLine("Fakelock", 2, 20) .getBytes(); + KernelWakelockStats staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, new KernelWakelockStats()); + assertEquals(2, staleStats.size()); + assertTrue(staleStats.containsKey("Wakelock")); assertTrue(staleStats.containsKey("Fakelock")); } @@ -114,8 +160,10 @@ public class KernelWakelockReaderTest extends TestCase { .addLine("Wakelock", 1, 10) // Milliseconds .addLine("Wakelock", 1, 10) // Milliseconds .getBytes(); + KernelWakelockStats staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, new KernelWakelockStats()); + assertEquals(1, staleStats.size()); assertTrue(staleStats.containsKey("Wakelock")); @@ -126,12 +174,14 @@ public class KernelWakelockReaderTest extends TestCase { @SmallTest public void testWakelocksBecomeStale() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + byte[] buffer = new ProcFileBuilder() .addLine("Fakelock", 3, 30) .getBytes(); - KernelWakelockStats staleStats = new KernelWakelockStats(); - staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, staleStats); + readKernelWakelockStats(staleStats, buffer, new WakeLockInfo[0]); + assertEquals(1, staleStats.size()); assertTrue(staleStats.containsKey("Fakelock")); @@ -139,9 +189,228 @@ public class KernelWakelockReaderTest extends TestCase { .addLine("Wakelock", 1, 10) .getBytes(); - staleStats = mReader.parseProcWakelocks(buffer, buffer.length, true, staleStats); + readKernelWakelockStats(staleStats, buffer, new WakeLockInfo[0]); + assertEquals(1, staleStats.size()); assertTrue(staleStats.containsKey("Wakelock")); assertFalse(staleStats.containsKey("Fakelock")); } + +// -------------------- Native (SystemSuspend) Wakelock Stats Test ------------------- + @SmallTest + public void testEmptyWakeLockInfoList() { + KernelWakelockStats staleStats = mReader.getNativeWakelockStats(new WakeLockInfo[0], + new KernelWakelockStats()); + + assertTrue(staleStats.isEmpty()); + } + + @SmallTest + public void testOneWakeLockInfo() { + WakeLockInfo[] wlStats = new WakeLockInfo[1]; + wlStats[0] = createWakeLockInfo("WakeLock", 20, 10000); + + KernelWakelockStats staleStats = mReader.getNativeWakelockStats(wlStats, + new KernelWakelockStats()); + + assertEquals(1, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock")); + + KernelWakelockStats.Entry entry = staleStats.get("WakeLock"); + assertEquals(20, entry.mCount); + assertEquals(10000, entry.mTotalTime); + } + + @SmallTest + public void testTwoWakeLockInfos() { + WakeLockInfo[] wlStats = new WakeLockInfo[2]; + wlStats[0] = createWakeLockInfo("WakeLock1", 10, 1000); + wlStats[1] = createWakeLockInfo("WakeLock2", 20, 2000); + + KernelWakelockStats staleStats = mReader.getNativeWakelockStats(wlStats, + new KernelWakelockStats()); + + assertEquals(2, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock1")); + assertTrue(staleStats.containsKey("WakeLock2")); + + KernelWakelockStats.Entry entry1 = staleStats.get("WakeLock1"); + assertEquals(10, entry1.mCount); + assertEquals(1000, entry1.mTotalTime); + + KernelWakelockStats.Entry entry2 = staleStats.get("WakeLock2"); + assertEquals(20, entry2.mCount); + assertEquals(2000, entry2.mTotalTime); + } + + @SmallTest + public void testWakeLockInfosBecomeStale() { + WakeLockInfo[] wlStats = new WakeLockInfo[1]; + wlStats[0] = createWakeLockInfo("WakeLock1", 10, 1000); + + KernelWakelockStats staleStats = new KernelWakelockStats(); + + readKernelWakelockStats(staleStats, new byte[0], wlStats); + + assertEquals(1, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock1")); + KernelWakelockStats.Entry entry = staleStats.get("WakeLock1"); + assertEquals(10, entry.mCount); + assertEquals(1000, entry.mTotalTime); + + wlStats[0] = createWakeLockInfo("WakeLock2", 20, 2000); + + readKernelWakelockStats(staleStats, new byte[0], wlStats); + + assertEquals(1, staleStats.size()); + + assertFalse(staleStats.containsKey("WakeLock1")); + assertTrue(staleStats.containsKey("WakeLock2")); + entry = staleStats.get("WakeLock2"); + assertEquals(20, entry.mCount); + assertEquals(2000, entry.mTotalTime); + } + +// -------------------- Aggregate Wakelock Stats Tests -------------------- + @SmallTest + public void testAggregateStatsEmpty() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + + byte[] buffer = new byte[0]; + WakeLockInfo[] wlStats = new WakeLockInfo[0]; + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertTrue(staleStats.isEmpty()); + } + + @SmallTest + public void testAggregateStatsNoNativeWakelocks() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + + byte[] buffer = new ProcFileBuilder() + .addLine("Wakelock", 34, 123) // Milliseconds + .getBytes(); + WakeLockInfo[] wlStats = new WakeLockInfo[0]; + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertEquals(1, staleStats.size()); + + assertTrue(staleStats.containsKey("Wakelock")); + + KernelWakelockStats.Entry entry = staleStats.get("Wakelock"); + assertEquals(34, entry.mCount); + assertEquals(1000 * 123, entry.mTotalTime); // Microseconds + } + + @SmallTest + public void testAggregateStatsNoKernelWakelocks() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + + byte[] buffer = new byte[0]; + WakeLockInfo[] wlStats = new WakeLockInfo[1]; + wlStats[0] = createWakeLockInfo("WakeLock", 10, 1000); + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertEquals(1, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock")); + + KernelWakelockStats.Entry entry = staleStats.get("WakeLock"); + assertEquals(10, entry.mCount); + assertEquals(1000, entry.mTotalTime); + } + + @SmallTest + public void testAggregateStatsBothKernelAndNativeWakelocks() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + + byte[] buffer = new ProcFileBuilder() + .addLine("WakeLock1", 34, 123) // Milliseconds + .getBytes(); + WakeLockInfo[] wlStats = new WakeLockInfo[1]; + wlStats[0] = createWakeLockInfo("WakeLock2", 10, 1000); + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertEquals(2, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock1")); + KernelWakelockStats.Entry entry1 = staleStats.get("WakeLock1"); + assertEquals(34, entry1.mCount); + assertEquals(123 * 1000, entry1.mTotalTime); // Microseconds + + assertTrue(staleStats.containsKey("WakeLock2")); + KernelWakelockStats.Entry entry2 = staleStats.get("WakeLock2"); + assertEquals(10, entry2.mCount); + assertEquals(1000, entry2.mTotalTime); + } + + @SmallTest + public void testAggregateStatsUpdate() throws Exception { + KernelWakelockStats staleStats = new KernelWakelockStats(); + + byte[] buffer = new ProcFileBuilder() + .addLine("WakeLock1", 34, 123) // Milliseconds + .addLine("WakeLock2", 46, 345) // Milliseconds + .getBytes(); + WakeLockInfo[] wlStats = new WakeLockInfo[2]; + wlStats[0] = createWakeLockInfo("WakeLock3", 10, 1000); + wlStats[1] = createWakeLockInfo("WakeLock4", 20, 2000); + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertEquals(4, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock1")); + assertTrue(staleStats.containsKey("WakeLock2")); + assertTrue(staleStats.containsKey("WakeLock3")); + assertTrue(staleStats.containsKey("WakeLock4")); + + KernelWakelockStats.Entry entry1 = staleStats.get("WakeLock1"); + assertEquals(34, entry1.mCount); + assertEquals(123 * 1000, entry1.mTotalTime); // Microseconds + + KernelWakelockStats.Entry entry2 = staleStats.get("WakeLock2"); + assertEquals(46, entry2.mCount); + assertEquals(345 * 1000, entry2.mTotalTime); // Microseconds + + KernelWakelockStats.Entry entry3 = staleStats.get("WakeLock3"); + assertEquals(10, entry3.mCount); + assertEquals(1000, entry3.mTotalTime); + + KernelWakelockStats.Entry entry4 = staleStats.get("WakeLock4"); + assertEquals(20, entry4.mCount); + assertEquals(2000, entry4.mTotalTime); + + buffer = new ProcFileBuilder() + .addLine("WakeLock1", 45, 789) // Milliseconds + .addLine("WakeLock1", 56, 123) // Milliseconds + .getBytes(); + wlStats = new WakeLockInfo[1]; + wlStats[0] = createWakeLockInfo("WakeLock4", 40, 4000); + + readKernelWakelockStats(staleStats, buffer, wlStats); + + assertEquals(2, staleStats.size()); + + assertTrue(staleStats.containsKey("WakeLock1")); + assertTrue(staleStats.containsKey("WakeLock4")); + + assertFalse(staleStats.containsKey("WakeLock2")); + assertFalse(staleStats.containsKey("WakeLock3")); + + entry1 = staleStats.get("WakeLock1"); + assertEquals(45 + 56, entry1.mCount); + assertEquals((789 + 123) * 1000, entry1.mTotalTime); // Microseconds + + entry2 = staleStats.get("WakeLock4"); + assertEquals(40, entry2.mCount); + assertEquals(4000, entry4.mTotalTime); + } } diff --git a/media/java/android/media/tv/TvTrackInfo.java b/media/java/android/media/tv/TvTrackInfo.java index 2bc9a2b4be45..10cbad9ed6af 100644 --- a/media/java/android/media/tv/TvTrackInfo.java +++ b/media/java/android/media/tv/TvTrackInfo.java @@ -277,28 +277,36 @@ public final class TvTrackInfo implements Parcelable { @Override public boolean equals(Object o) { if (this == o) { - return true; + return true; } if (!(o instanceof TvTrackInfo)) { - return false; + return false; } TvTrackInfo obj = (TvTrackInfo) o; - return TextUtils.equals(mId, obj.mId) - && mType == obj.mType - && TextUtils.equals(mLanguage, obj.mLanguage) - && TextUtils.equals(mDescription, obj.mDescription) - && mEncrypted == obj.mEncrypted - && Objects.equals(mExtra, obj.mExtra) - && (mType == TYPE_AUDIO - ? mAudioChannelCount == obj.mAudioChannelCount - && mAudioSampleRate == obj.mAudioSampleRate - : (mType == TYPE_VIDEO - ? mVideoWidth == obj.mVideoWidth - && mVideoHeight == obj.mVideoHeight - && mVideoFrameRate == obj.mVideoFrameRate - && mVideoPixelAspectRatio == obj.mVideoPixelAspectRatio : true)); + + if (!TextUtils.equals(mId, obj.mId) || mType != obj.mType + || !TextUtils.equals(mLanguage, obj.mLanguage) + || !TextUtils.equals(mDescription, obj.mDescription) + || !Objects.equals(mExtra, obj.mExtra)) { + return false; + } + + switch (mType) { + case TYPE_AUDIO: + return mAudioChannelCount == obj.mAudioChannelCount + && mAudioSampleRate == obj.mAudioSampleRate; + + case TYPE_VIDEO: + return mVideoWidth == obj.mVideoWidth + && mVideoHeight == obj.mVideoHeight + && mVideoFrameRate == obj.mVideoFrameRate + && mVideoPixelAspectRatio == obj.mVideoPixelAspectRatio + && mVideoActiveFormatDescription == obj.mVideoActiveFormatDescription; + } + + return true; } @Override diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 7d0291f643cf..1a5d6e3f87db 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -68,8 +68,8 @@ android_library { ], aaptflags: [ - "--extra-packages", - "com.android.keyguard", + "--extra-packages com.android.keyguard", + "--legacy", ], } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index b7c20aa197ca..b67a9f03822c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -548,7 +548,7 @@ public class MobileSignalController extends SignalController< } private boolean isDataDisabled() { - return !mPhone.getDataEnabled(mSubscriptionInfo.getSubscriptionId()); + return !mPhone.isDataCapable(); } @VisibleForTesting @@ -568,6 +568,7 @@ public class MobileSignalController extends SignalController< pw.println(" mSignalStrength=" + mSignalStrength + ","); pw.println(" mDataState=" + mDataState + ","); pw.println(" mDataNetType=" + mDataNetType + ","); + pw.println(" isDataDisabled=" + isDataDisabled() + ","); } class MobilePhoneStateListener extends PhoneStateListener { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index c1f88855ac24..02f99a00c1a0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -155,7 +155,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected void setupNetworkController() { // For now just pretend to be the data sim, so we can test that too. mSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; - when(mMockTm.getDataEnabled(mSubId)).thenReturn(true); + when(mMockTm.isDataCapable()).thenReturn(true); setDefaultSubId(mSubId); setSubscriptions(mSubId); mMobileSignalController = mNetworkController.mMobileSignalControllers.get(mSubId); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index 96fad21ed7a3..2aa933e723c2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -119,7 +119,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testNoInternetIcon() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_CONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -133,7 +133,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testDataDisabledIcon() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -188,7 +188,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testDataDisabledIcon_UserNotSetup() { setupNetworkController(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); setupDefaultSignal(); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, 0); setConnectivityViaBroadcast(NetworkCapabilities.TRANSPORT_CELLULAR, false, false); @@ -203,7 +203,7 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { @Test public void testAlwaysShowDataRatIcon() { setupDefaultSignal(); - when(mMockTm.getDataEnabled(mSubId)).thenReturn(false); + when(mMockTm.isDataCapable()).thenReturn(false); updateDataConnectionState(TelephonyManager.DATA_DISCONNECTED, TelephonyManager.NETWORK_TYPE_GSM); diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index ae80d7ef11e5..a71d46cbe886 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2614,9 +2614,11 @@ public class ConnectivityService extends IConnectivityManager.Stub final boolean valid = ((msg.arg1 & NETWORK_VALIDATION_RESULT_VALID) != 0); final boolean wasValidated = nai.lastValidated; final boolean wasDefault = isDefaultNetwork(nai); - if (nai.everCaptivePortalDetected && !nai.captivePortalLoginNotified - && valid) { - nai.captivePortalLoginNotified = true; + // Only show a connected notification if the network is pending validation + // after the captive portal app was open, and it has now validated. + if (nai.captivePortalValidationPending && valid) { + // User is now logged in, network validated. + nai.captivePortalValidationPending = false; showNetworkNotification(nai, NotificationType.LOGGED_IN); } @@ -2687,9 +2689,6 @@ public class ConnectivityService extends IConnectivityManager.Stub final int oldScore = nai.getCurrentScore(); nai.lastCaptivePortalDetected = visible; nai.everCaptivePortalDetected |= visible; - if (visible) { - nai.captivePortalLoginNotified = false; - } if (nai.lastCaptivePortalDetected && Settings.Global.CAPTIVE_PORTAL_MODE_AVOID == getCaptivePortalMode()) { if (DBG) log("Avoiding captive portal network: " + nai.name()); @@ -3498,6 +3497,12 @@ public class ConnectivityService extends IConnectivityManager.Stub new CaptivePortal(new CaptivePortalImpl(network).asBinder())); appIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); + // This runs on a random binder thread, but getNetworkAgentInfoForNetwork is thread-safe, + // and captivePortalValidationPending is volatile. + final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network); + if (nai != null) { + nai.captivePortalValidationPending = true; + } Binder.withCleanCallingIdentity(() -> mContext.startActivityAsUser(appIntent, UserHandle.CURRENT)); } diff --git a/services/core/java/com/android/server/ExtconStateObserver.java b/services/core/java/com/android/server/ExtconStateObserver.java new file mode 100644 index 000000000000..6b561c7af63e --- /dev/null +++ b/services/core/java/com/android/server/ExtconStateObserver.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2018 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.server; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.FileUtils; +import android.util.Slog; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +/** + * A specialized ExtconUEventObserver that on receiving a {@link UEvent} calls {@link + * #updateState(ExtconInfo, String, S)} with the value of{@link #parseState(ExtconInfo, String)}. + * + * @param <S> the type of state to parse and update + * @hide + */ +public abstract class ExtconStateObserver<S> extends ExtconUEventObserver { + private static final String TAG = "ExtconStateObserver"; + private static final boolean LOG = false; + + /** + * Parses the current state from the state file for {@code extconInfo} and calls {@link + * #updateState(ExtconInfo, String, Object)} + * + * @param extconInfo the extconInfo to update state for + * @see #parseState(ExtconInfo, String) + * @see ExtconInfo#getStatePath() + */ + public void updateStateFromFile(ExtconInfo extconInfo) { + String statePath = extconInfo.getStatePath(); + try { + S state = + parseState( + extconInfo, + FileUtils.readTextFile(new File(statePath), 0, null).trim()); + if (state != null) { + updateState(extconInfo, extconInfo.getName(), state); + } + } catch (FileNotFoundException e) { + Slog.w(TAG, statePath + " not found while attempting to determine initial state", e); + } catch (IOException e) { + Slog.e( + TAG, + "Error reading " + statePath + " while attempting to determine initial state ", + e); + } + } + + @Override + public void onUEvent(ExtconInfo extconInfo, UEvent event) { + if (LOG) Slog.d(TAG, extconInfo.getName() + " UEVENT: " + event); + String name = event.get("NAME"); + S state = parseState(extconInfo, event.get("STATE")); + if (state != null) { + updateState(extconInfo, name, state); + } + } + + /** + * Subclasses of ExtconStateObserver should override this method update state for {@code + * exconInfo} from an {@code UEvent}. + * + * @param extconInfo the external connection + * @param eventName the {@code NAME} of the {@code UEvent} + * @param state the{@code STATE} as parsed by {@link #parseState(ExtconInfo, String)}. + */ + public abstract void updateState(ExtconInfo extconInfo, String eventName, @NonNull S state); + + /** + * Subclasses of ExtconStateObserver should override this method to parse the {@code STATE} from + * an UEvent. + * + * @param extconInfo that matches the {@code DEVPATH} of {@code event} + * @param state the {@code STATE} from a {@code UEvent}. + * @return the parsed state. Return null if the state can not be parsed. + */ + @Nullable + public abstract S parseState(ExtconInfo extconInfo, String state); +} diff --git a/services/core/java/com/android/server/ExtconUEventObserver.java b/services/core/java/com/android/server/ExtconUEventObserver.java new file mode 100644 index 000000000000..b3084f50071f --- /dev/null +++ b/services/core/java/com/android/server/ExtconUEventObserver.java @@ -0,0 +1,128 @@ +/* + * Copyright (C) 2018 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.server; + +import android.annotation.Nullable; +import android.os.UEventObserver; +import android.util.ArrayMap; +import android.util.Slog; + +import java.io.File; +import java.io.IOException; +import java.util.Locale; +import java.util.Map; + +/** + * A specialized UEventObserver that receives UEvents from the kernel for devices in the {@code + * /sys/class/extcon}. directory + * + * <p>Subclass ExtconUEventObserver, implementing {@link #onUEvent(ExtconInfo, UEvent)}, then call + * startObserving() with a ExtconInfo to observe. The UEvent thread will then call your onUEvent() + * method when a UEvent occurs that matches the path of your ExtconInfos. + * + * <p>Call stopObserving() to stop receiving UEvents. + * + * <p>There is only one UEvent thread per process, even if that process has multiple UEventObserver + * subclass instances. The UEvent thread starts when the startObserving() is called for the first + * time in that process. Once started the UEvent thread will not stop (although it can stop + * notifying UEventObserver's via stopObserving()). + * + * <p> + * + * @hide + */ +public abstract class ExtconUEventObserver extends UEventObserver { + private static final String TAG = "ExtconUEventObserver"; + private static final boolean LOG = false; + private final Map<String, ExtconInfo> mExtconInfos = new ArrayMap<>(); + + @Override + public final void onUEvent(UEvent event) { + String devPath = event.get("DEVPATH"); + ExtconInfo info = mExtconInfos.get(devPath); + if (info != null) { + onUEvent(info, event); + } else { + Slog.w(TAG, "No match found for DEVPATH of " + event + " in " + mExtconInfos); + } + } + + /** + * Subclasses of ExtconUEventObserver should override this method to handle UEvents. + * + * @param extconInfo that matches the {@code DEVPATH} of {@code event} + * @param event the event + */ + protected abstract void onUEvent(ExtconInfo extconInfo, UEvent event); + + /** Starts observing {@link ExtconInfo#getDevicePath()}. */ + public void startObserving(ExtconInfo extconInfo) { + mExtconInfos.put(extconInfo.getDevicePath(), extconInfo); + if (LOG) Slog.v(TAG, "Observing " + extconInfo.getDevicePath()); + startObserving("DEVPATH=" + extconInfo.getDevicePath()); + } + + /** An External Connection to watch. */ + public static final class ExtconInfo { + private static final String TAG = "ExtconInfo"; + + private final String mName; + + public ExtconInfo(String name) { + mName = name; + } + + /** The name of the external connection */ + public String getName() { + return mName; + } + + /** + * The path to the device for this external connection. + * + * <p><b>NOTE</b> getting this path involves resolving a symlink. + * + * @return the device path, or null if it not found. + */ + @Nullable + public String getDevicePath() { + try { + String extconPath = String.format(Locale.US, "/sys/class/extcon/%s", mName); + File devPath = new File(extconPath); + if (devPath.exists()) { + String canonicalPath = devPath.getCanonicalPath(); + int start = canonicalPath.indexOf("/devices"); + return canonicalPath.substring(start); + } + return null; + } catch (IOException e) { + Slog.e(TAG, "Could not get the extcon device path for " + mName, e); + return null; + } + } + + /** The path to the state file */ + public String getStatePath() { + return String.format(Locale.US, "/sys/class/extcon/%s/state", mName); + } + } + + /** Does the {@link /sys/class/extcon} directory exist */ + public static boolean extconExists() { + File extconDir = new File("/sys/class/extcon"); + return extconDir.exists() && extconDir.isDirectory(); + } +} diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 6d08b5ab9b87..e29bf8d294de 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -34,7 +34,6 @@ import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY; import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT; import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.STATS_PER_UID; -import static android.net.NetworkStats.TAG_ALL; import static android.net.NetworkStats.TAG_NONE; import static android.net.TrafficStats.UID_TETHERING; @@ -90,7 +89,6 @@ import com.android.internal.app.IBatteryStats; import com.android.internal.util.DumpUtils; import com.android.internal.util.HexDump; import com.android.internal.util.Preconditions; -import com.android.server.net.NetworkStatsFactory; import com.google.android.collect.Maps; @@ -164,8 +162,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { private final RemoteCallbackList<INetworkManagementEventObserver> mObservers = new RemoteCallbackList<>(); - private final NetworkStatsFactory mStatsFactory = new NetworkStatsFactory(); - @GuardedBy("mTetheringStatsProviders") private final HashMap<ITetheringStatsProvider, String> mTetheringStatsProviders = Maps.newHashMap(); @@ -1207,36 +1203,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { } @Override - public NetworkStats getNetworkStatsSummaryDev() { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - try { - return mStatsFactory.readNetworkStatsSummaryDev(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - @Override - public NetworkStats getNetworkStatsSummaryXt() { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - try { - return mStatsFactory.readNetworkStatsSummaryXt(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - @Override - public NetworkStats getNetworkStatsDetail() { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - try { - return mStatsFactory.readNetworkStatsDetail(); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - - @Override public void setInterfaceQuota(String iface, long quotaBytes) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); @@ -1535,16 +1501,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub { return true; } - @Override - public NetworkStats getNetworkStatsUidDetail(int uid, String[] ifaces) { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - try { - return mStatsFactory.readNetworkStatsDetail(uid, ifaces, TAG_ALL); - } catch (IOException e) { - throw new IllegalStateException(e); - } - } - private class NetdTetheringStatsProvider extends ITetheringStatsProvider.Stub { @Override public NetworkStats getTetherStats(int how) { diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java index 864a793b8f40..5b043799f848 100644 --- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java +++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java @@ -155,9 +155,9 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { // Whether a captive portal was found during the last network validation attempt. public boolean lastCaptivePortalDetected; - // Indicates the user was notified of a successful captive portal login since a portal was - // last detected. - public boolean captivePortalLoginNotified; + // Indicates the captive portal app was opened to show a login UI to the user, but the network + // has not validated yet. + public volatile boolean captivePortalValidationPending; // Set to true when partial connectivity was detected. public boolean partialConnectivity; @@ -629,7 +629,7 @@ public class NetworkAgentInfo implements Comparable<NetworkAgentInfo> { + "acceptUnvalidated{" + networkMisc.acceptUnvalidated + "} " + "everCaptivePortalDetected{" + everCaptivePortalDetected + "} " + "lastCaptivePortalDetected{" + lastCaptivePortalDetected + "} " - + "captivePortalLoginNotified{" + captivePortalLoginNotified + "} " + + "captivePortalValidationPending{" + captivePortalValidationPending + "} " + "partialConnectivity{" + partialConnectivity + "} " + "acceptPartialConnectivity{" + networkMisc.acceptPartialConnectivity + "} " + "clat{" + clatd + "} " diff --git a/services/core/java/com/android/server/net/NetworkStatsFactory.java b/services/core/java/com/android/server/net/NetworkStatsFactory.java index 7687718b0693..9344ef71c9f7 100644 --- a/services/core/java/com/android/server/net/NetworkStatsFactory.java +++ b/services/core/java/com/android/server/net/NetworkStatsFactory.java @@ -179,8 +179,10 @@ public class NetworkStatsFactory { mStatsXtIfaceFmt = new File(procRoot, "net/xt_qtaguid/iface_stat_fmt"); mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats"); mUseBpfStats = useBpfStats; - mPersistSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), -1); - mTunAnd464xlatAdjustedStats = new NetworkStats(SystemClock.elapsedRealtime(), -1); + synchronized (sPersistentDataLock) { + mPersistSnapshot = new NetworkStats(SystemClock.elapsedRealtime(), -1); + mTunAnd464xlatAdjustedStats = new NetworkStats(SystemClock.elapsedRealtime(), -1); + } } public NetworkStats readBpfNetworkStatsDev() throws IOException { diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 5505828063ed..e67b39137a4e 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -180,6 +180,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { private final Context mContext; private final INetworkManagementService mNetworkManager; + private final NetworkStatsFactory mStatsFactory; private final AlarmManager mAlarmManager; private final Clock mClock; private final TelephonyManager mTeleManager; @@ -329,8 +330,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { NetworkStatsService service = new NetworkStatsService(context, networkManager, alarmManager, wakeLock, getDefaultClock(), TelephonyManager.getDefault(), - new DefaultNetworkStatsSettings(context), new NetworkStatsObservers(), - getDefaultSystemDir(), getDefaultBaseDir()); + new DefaultNetworkStatsSettings(context), new NetworkStatsFactory(), + new NetworkStatsObservers(), getDefaultSystemDir(), getDefaultBaseDir()); service.registerLocalService(); HandlerThread handlerThread = new HandlerThread(TAG); @@ -347,7 +348,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub { NetworkStatsService(Context context, INetworkManagementService networkManager, AlarmManager alarmManager, PowerManager.WakeLock wakeLock, Clock clock, TelephonyManager teleManager, NetworkStatsSettings settings, - NetworkStatsObservers statsObservers, File systemDir, File baseDir) { + NetworkStatsFactory factory, NetworkStatsObservers statsObservers, File systemDir, + File baseDir) { mContext = checkNotNull(context, "missing Context"); mNetworkManager = checkNotNull(networkManager, "missing INetworkManagementService"); mAlarmManager = checkNotNull(alarmManager, "missing AlarmManager"); @@ -355,6 +357,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mSettings = checkNotNull(settings, "missing NetworkStatsSettings"); mTeleManager = checkNotNull(teleManager, "missing TelephonyManager"); mWakeLock = checkNotNull(wakeLock, "missing WakeLock"); + mStatsFactory = checkNotNull(factory, "missing factory"); mStatsObservers = checkNotNull(statsObservers, "missing NetworkStatsObservers"); mSystemDir = checkNotNull(systemDir, "missing systemDir"); mBaseDir = checkNotNull(baseDir, "missing baseDir"); @@ -752,14 +755,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // TODO: switch to data layer stats once kernel exports // for now, read network layer stats and flatten across all ifaces - final long token = Binder.clearCallingIdentity(); - final NetworkStats networkLayer; - try { - networkLayer = mNetworkManager.getNetworkStatsUidDetail(uid, - NetworkStats.INTERFACES_ALL); - } finally { - Binder.restoreCallingIdentity(token); - } + final NetworkStats networkLayer = readNetworkStatsUidDetail(uid, INTERFACES_ALL, TAG_ALL); // splice in operation counts networkLayer.spliceOperationsFrom(mUidOperations); @@ -1190,7 +1186,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { mobileIfaces.add(stackedIface); } - NetworkStatsFactory.noteStackedIface(stackedIface, baseIface); + mStatsFactory.noteStackedIface(stackedIface, baseIface); } } } @@ -1220,7 +1216,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { final NetworkStats xtSnapshot = getNetworkStatsXt(); Trace.traceEnd(TRACE_TAG_NETWORK); Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev"); - final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev(); + final NetworkStats devSnapshot = readNetworkStatsSummaryDev(); Trace.traceEnd(TRACE_TAG_NETWORK); // Tethering snapshot for dev and xt stats. Counts per-interface data from tethering stats @@ -1614,6 +1610,30 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } } + private NetworkStats readNetworkStatsSummaryDev() { + try { + return mStatsFactory.readNetworkStatsSummaryDev(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private NetworkStats readNetworkStatsSummaryXt() { + try { + return mStatsFactory.readNetworkStatsSummaryXt(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + private NetworkStats readNetworkStatsUidDetail(int uid, String[] ifaces, int tag) { + try { + return mStatsFactory.readNetworkStatsDetail(uid, ifaces, tag); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + /** * Return snapshot of current UID statistics, including any * {@link TrafficStats#UID_TETHERING}, video calling data usage, and {@link #mUidOperations} @@ -1624,8 +1644,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { */ private NetworkStats getNetworkStatsUidDetail(String[] ifaces) throws RemoteException { - final NetworkStats uidSnapshot = mNetworkManager.getNetworkStatsUidDetail(UID_ALL, - ifaces); + final NetworkStats uidSnapshot = readNetworkStatsUidDetail(UID_ALL, ifaces, TAG_ALL); // fold tethering stats and operations into uid snapshot final NetworkStats tetherSnapshot = getNetworkStatsTethering(STATS_PER_UID); @@ -1655,7 +1674,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * Return snapshot of current XT statistics with video calling data usage statistics. */ private NetworkStats getNetworkStatsXt() throws RemoteException { - final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt(); + final NetworkStats xtSnapshot = readNetworkStatsSummaryXt(); final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService( Context.TELEPHONY_SERVICE); diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 0149d30da6bd..caf0b92a55e0 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -6482,7 +6482,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { case KeyEvent.KEYCODE_VOLUME_MUTE: return mDockMode != Intent.EXTRA_DOCK_STATE_UNDOCKED; - // ignore media and camera keys + // ignore media keys case KeyEvent.KEYCODE_MUTE: case KeyEvent.KEYCODE_HEADSETHOOK: case KeyEvent.KEYCODE_MEDIA_PLAY: @@ -6495,7 +6495,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { case KeyEvent.KEYCODE_MEDIA_RECORD: case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: - case KeyEvent.KEYCODE_CAMERA: return false; } return true; diff --git a/startop/apps/test/Android.bp b/startop/apps/test/Android.bp index 3adc05e2cab9..7a1678ac9a5a 100644 --- a/startop/apps/test/Android.bp +++ b/startop/apps/test/Android.bp @@ -18,6 +18,9 @@ android_app { name: "startop_test_app", srcs: [ "src/EmptyActivity.java", - "src/LayoutInflation.java", + "src/LayoutInflationActivity.java", + "src/ComplexLayoutInflationActivity.java", + "src/FrameLayoutInflationActivity.java", + "src/TextViewInflationActivity.java", ], } diff --git a/startop/apps/test/AndroidManifest.xml b/startop/apps/test/AndroidManifest.xml index 6b08118b73b7..467d8f72e468 100644 --- a/startop/apps/test/AndroidManifest.xml +++ b/startop/apps/test/AndroidManifest.xml @@ -23,7 +23,12 @@ android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true"> - <activity android:name=".EmptyActivity"> + + <activity + android:label="Complex Layout Test" + android:name=".ComplexLayoutInflationActivity" + android:exported="true" > + <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -31,7 +36,41 @@ </intent-filter> </activity> - <activity android:name=".LayoutInflation" android:exported="true" /> + <activity + android:label="Empty Activity Layout Test" + android:name=".EmptyActivity" + android:exported="true" > + + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <activity + android:label="FrameLayout Layout Test" + android:name=".FrameLayoutInflationActivity" + android:exported="true" > + + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + + <activity + android:label="TextView Layout Test" + android:name=".TextViewInflationActivity" + android:exported="true" > + + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> </application> </manifest> diff --git a/startop/apps/test/README.md b/startop/apps/test/README.md index 53c184bdd1c8..dadc66af3306 100644 --- a/startop/apps/test/README.md +++ b/startop/apps/test/README.md @@ -23,4 +23,4 @@ The activity adds an `inflate#activity_main` slice to atrace around the time spent in view inflation to make it easier to focus on the time spent in view inflation. - adb shell am start -n com.android.startop.test/.LayoutInflation + adb shell am start -n com.android.startop.test/.ComplexLayoutInflationActivity diff --git a/startop/apps/test/res/layout/framelayout_list.xml b/startop/apps/test/res/layout/framelayout_list.xml new file mode 100644 index 000000000000..2dd821913cb8 --- /dev/null +++ b/startop/apps/test/res/layout/framelayout_list.xml @@ -0,0 +1,5013 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" > + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ffaaaaaa" /> + + <FrameLayout + android:layout_width="match_parent" + android:layout_height="20dp" + android:background="#ff000000" /> + </LinearLayout> +</ScrollView> diff --git a/startop/apps/test/res/layout/textview_list.xml b/startop/apps/test/res/layout/textview_list.xml new file mode 100644 index 000000000000..1cff5b2e769a --- /dev/null +++ b/startop/apps/test/res/layout/textview_list.xml @@ -0,0 +1,5014 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" > + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + <TextView + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="TextView" /> + + </LinearLayout> +</ScrollView> diff --git a/startop/apps/test/src/ComplexLayoutInflationActivity.java b/startop/apps/test/src/ComplexLayoutInflationActivity.java new file mode 100644 index 000000000000..a357073261f5 --- /dev/null +++ b/startop/apps/test/src/ComplexLayoutInflationActivity.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2019 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.startop.test; + +import android.os.Bundle; + +/** + * This activity inflates a reasonably complex layout to see the impact of + * layout inflation. The layout is supported by the viewcompiler, so this can be + * used for testing precompiled layout performance. + */ +public class ComplexLayoutInflationActivity extends LayoutInflationActivity { + protected void onCreate(Bundle savedInstanceState) { + Bundle newState = savedInstanceState == null + ? new Bundle() : new Bundle(savedInstanceState); + newState.putInt(LAYOUT_ID, R.layout.activity_main); + + super.onCreate(newState); + } +} diff --git a/startop/apps/test/src/EmptyActivity.java b/startop/apps/test/src/EmptyActivity.java index 5202938686c0..bcb2e707016b 100644 --- a/startop/apps/test/src/EmptyActivity.java +++ b/startop/apps/test/src/EmptyActivity.java @@ -1,18 +1,18 @@ -// -// Copyright (C) 2019 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. -// +/* + * Copyright (C) 2019 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.startop.test; diff --git a/startop/apps/test/src/FrameLayoutInflationActivity.java b/startop/apps/test/src/FrameLayoutInflationActivity.java new file mode 100644 index 000000000000..b995e799e22b --- /dev/null +++ b/startop/apps/test/src/FrameLayoutInflationActivity.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2019 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.startop.test; + +import android.os.Bundle; + +public class FrameLayoutInflationActivity extends LayoutInflationActivity { + protected void onCreate(Bundle savedInstanceState) { + Bundle newState = savedInstanceState == null + ? new Bundle() : new Bundle(savedInstanceState); + newState.putInt(LAYOUT_ID, R.layout.framelayout_list); + + super.onCreate(newState); + } +} diff --git a/startop/apps/test/src/LayoutInflation.java b/startop/apps/test/src/LayoutInflation.java deleted file mode 100644 index daa4e4556f8e..000000000000 --- a/startop/apps/test/src/LayoutInflation.java +++ /dev/null @@ -1,39 +0,0 @@ -// -// Copyright (C) 2019 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.startop.test; - -import android.app.Activity; -import android.os.Bundle; -import android.os.Trace; -import android.view.LayoutInflater; -import android.view.View; - -/** - * This activity inflates a reasonably complex layout to see the impact of - * layout inflation. The layout is supported by the viewcompiler, so this can be - * used for testing precompiled layout performance. - */ -public class LayoutInflation extends Activity { - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - LayoutInflater inflater = LayoutInflater.from(this); - Trace.beginSection("inflate layout:activity_main"); - View view = inflater.inflate(R.layout.activity_main, /*root=*/null); - Trace.endSection(); - setContentView(view); - } -} diff --git a/startop/apps/test/src/LayoutInflationActivity.java b/startop/apps/test/src/LayoutInflationActivity.java new file mode 100644 index 000000000000..06a05701f831 --- /dev/null +++ b/startop/apps/test/src/LayoutInflationActivity.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2019 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.startop.test; + +import android.app.Activity; +import android.os.Bundle; +import android.os.Trace; +import android.view.LayoutInflater; +import android.view.View; + +public class LayoutInflationActivity extends Activity { + public static String LAYOUT_ID = "layout-id"; + + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + int layoutId = savedInstanceState.getInt(LAYOUT_ID); + String layoutName = getResources().getResourceEntryName(layoutId); + + LayoutInflater inflater = LayoutInflater.from(this); + Trace.beginSection("inflate layout: " + layoutName); + View view = inflater.inflate(layoutId, /*root=*/null); + Trace.endSection(); + setContentView(view); + } +} diff --git a/startop/apps/test/src/TextViewInflationActivity.java b/startop/apps/test/src/TextViewInflationActivity.java new file mode 100644 index 000000000000..30e308ef7e6d --- /dev/null +++ b/startop/apps/test/src/TextViewInflationActivity.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2019 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.startop.test; + +import android.os.Bundle; + +public class TextViewInflationActivity extends LayoutInflationActivity { + protected void onCreate(Bundle savedInstanceState) { + Bundle newState = savedInstanceState == null + ? new Bundle() : new Bundle(savedInstanceState); + newState.putInt(LAYOUT_ID, R.layout.textview_list); + + super.onCreate(newState); + } +} diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java index 63e3801a9b4f..d4ea29fe1463 100644 --- a/telephony/java/android/telephony/SmsManager.java +++ b/telephony/java/android/telephony/SmsManager.java @@ -16,9 +16,11 @@ package android.telephony; +import android.annotation.IntDef; import android.annotation.RequiresPermission; import android.annotation.SuppressAutoDoc; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.annotation.UnsupportedAppUsage; import android.app.ActivityThread; import android.app.PendingIntent; @@ -43,6 +45,8 @@ import com.android.internal.telephony.ISms; import com.android.internal.telephony.ITelephony; import com.android.internal.telephony.SmsRawData; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -2798,4 +2802,85 @@ public final class SmsManager { config.getBoolean(MMS_CONFIG_SUPPORT_HTTP_CHARSET_HEADER)); return filtered; } + + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"SMS_CATEGORY_"}, + value = { + SmsManager.SMS_CATEGORY_NOT_SHORT_CODE, + SmsManager.SMS_CATEGORY_FREE_SHORT_CODE, + SmsManager.SMS_CATEGORY_STANDARD_SHORT_CODE, + SmsManager.SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE, + SmsManager.SMS_CATEGORY_PREMIUM_SHORT_CODE}) + public @interface SmsShortCodeCategory {} + + /** + * Return value from {@link #checkSmsShortCodeDestination(String, String)} ()} for regular + * phone numbers. + * @hide + */ + @TestApi + public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; + /** + * Return value from {@link #checkSmsShortCodeDestination(String, String)} ()} for free + * (no cost) short codes. + * @hide + */ + @TestApi + public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; + /** + * Return value from {@link #checkSmsShortCodeDestination(String, String)} ()} for + * standard rate (non-premium) + * short codes. + * @hide + */ + @TestApi + public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; + /** + * Return value from {@link #checkSmsShortCodeDestination(String, String)} ()} for possible + * premium short codes. + * @hide + */ + @TestApi + public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; + /** + * Return value from {@link #checkSmsShortCodeDestination(String, String)} ()} for + * premium short codes. + * @hide + */ + @TestApi + public static final int SMS_CATEGORY_PREMIUM_SHORT_CODE = 4; + + /** + * Check if the destination address is a possible premium short code. + * NOTE: the caller is expected to strip non-digits from the destination number with + * {@link PhoneNumberUtils#extractNetworkPortion} before calling this method. + * + * @param destAddress the destination address to test for possible short code + * @param countryIso the ISO country code + * + * @return + * {@link SmsManager#SMS_CATEGORY_NOT_SHORT_CODE}, + * {@link SmsManager#SMS_CATEGORY_FREE_SHORT_CODE}, + * {@link SmsManager#SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE}, + * {@link SmsManager#SMS_CATEGORY_PREMIUM_SHORT_CODE}, or + * {@link SmsManager#SMS_CATEGORY_STANDARD_SHORT_CODE} + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) + @TestApi + public @SmsShortCodeCategory int checkSmsShortCodeDestination( + String destAddress, String countryIso) { + try { + ISms iccISms = getISmsServiceOrThrow(); + if (iccISms != null) { + return iccISms.checkSmsShortCodeDestination(getSubscriptionId(), + ActivityThread.currentPackageName(), destAddress, countryIso); + } + } catch (RemoteException e) { + Log.e(TAG, "checkSmsShortCodeDestination() RemoteException", e); + } + return SmsManager.SMS_CATEGORY_NOT_SHORT_CODE; + } } diff --git a/telephony/java/com/android/internal/telephony/ISms.aidl b/telephony/java/com/android/internal/telephony/ISms.aidl index c3dcc3db7d45..87aff8a57e27 100644 --- a/telephony/java/com/android/internal/telephony/ISms.aidl +++ b/telephony/java/com/android/internal/telephony/ISms.aidl @@ -551,4 +551,11 @@ interface ISms { * @param intent PendingIntent to be sent when an SMS is received containing the token. */ String createAppSpecificSmsToken(int subId, String callingPkg, in PendingIntent intent); + + /** + * Check if the destination is a possible premium short code. + * + * @param destAddress the destination address to test for possible short code + */ + int checkSmsShortCodeDestination(int subId, String callingApk, String destAddress, String countryIso); } diff --git a/telephony/java/com/android/internal/telephony/ISmsImplBase.java b/telephony/java/com/android/internal/telephony/ISmsImplBase.java index 1cdf44d897b2..194f46195c55 100644 --- a/telephony/java/com/android/internal/telephony/ISmsImplBase.java +++ b/telephony/java/com/android/internal/telephony/ISmsImplBase.java @@ -188,4 +188,10 @@ public class ISmsImplBase extends ISms.Stub { public String createAppSpecificSmsToken(int subId, String callingPkg, PendingIntent intent) { throw new UnsupportedOperationException(); } + + @Override + public int checkSmsShortCodeDestination( + int subid, String callingApk, String destAddress, String countryIso) { + throw new UnsupportedOperationException(); + } } diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index a192945b7431..b60dc2d6b759 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -18,6 +18,7 @@ package com.android.server; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static android.content.pm.PackageManager.MATCH_ANY_USER; +import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN; import static android.net.ConnectivityManager.CONNECTIVITY_ACTION; import static android.net.ConnectivityManager.NETID_UNSET; import static android.net.ConnectivityManager.PRIVATE_DNS_MODE_OFF; @@ -84,13 +85,13 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -145,6 +146,7 @@ import android.net.NetworkInfo.DetailedState; import android.net.NetworkMisc; import android.net.NetworkRequest; import android.net.NetworkSpecifier; +import android.net.NetworkStack; import android.net.NetworkStackClient; import android.net.NetworkState; import android.net.NetworkUtils; @@ -159,6 +161,7 @@ import android.net.shared.PrivateDnsConfig; import android.net.util.MultinetworkPolicyTracker; import android.os.BadParcelableException; import android.os.Binder; +import android.os.Bundle; import android.os.ConditionVariable; import android.os.Handler; import android.os.HandlerThread; @@ -196,6 +199,7 @@ import com.android.server.connectivity.DefaultNetworkMetrics; import com.android.server.connectivity.IpConnectivityMetrics; import com.android.server.connectivity.MockableSystemProperties; import com.android.server.connectivity.Nat464Xlat; +import com.android.server.connectivity.NetworkNotificationManager.NotificationType; import com.android.server.connectivity.ProxyTracker; import com.android.server.connectivity.Tethering; import com.android.server.connectivity.Vpn; @@ -290,6 +294,7 @@ public class ConnectivityServiceTest { @Mock NetworkStackClient mNetworkStack; @Mock PackageManager mPackageManager; @Mock UserManager mUserManager; + @Mock NotificationManager mNotificationManager; private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor = ArgumentCaptor.forClass(ResolverParamsParcel.class); @@ -359,7 +364,7 @@ public class ConnectivityServiceTest { @Override public Object getSystemService(String name) { if (Context.CONNECTIVITY_SERVICE.equals(name)) return mCm; - if (Context.NOTIFICATION_SERVICE.equals(name)) return mock(NotificationManager.class); + if (Context.NOTIFICATION_SERVICE.equals(name)) return mNotificationManager; if (Context.NETWORK_STACK_SERVICE.equals(name)) return mNetworkStack; if (Context.USER_SERVICE.equals(name)) return mUserManager; return super.getSystemService(name); @@ -379,7 +384,17 @@ public class ConnectivityServiceTest { public PackageManager getPackageManager() { return mPackageManager; } - } + + @Override + public void enforceCallingOrSelfPermission(String permission, String message) { + // The mainline permission can only be held if signed with the network stack certificate + // Skip testing for this permission. + if (NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK.equals(permission)) return; + // All other permissions should be held by the test or unnecessary: check as normal to + // make sure the code does not rely on unexpected permissions. + super.enforceCallingOrSelfPermission(permission, message); + } + } public void waitForIdle(int timeoutMsAsInt) { long timeoutMs = timeoutMsAsInt; @@ -2864,6 +2879,9 @@ public class ConnectivityServiceTest { // Expect NET_CAPABILITY_VALIDATED onAvailable callback. validatedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent); + // Expect no notification to be shown when captive portal disappears by itself + verify(mNotificationManager, never()).notifyAsUser( + anyString(), eq(NotificationType.LOGGED_IN.eventId), any(), any()); // Break network connectivity. // Expect NET_CAPABILITY_VALIDATED onLost callback. @@ -2893,6 +2911,8 @@ public class ConnectivityServiceTest { // Check that calling startCaptivePortalApp does nothing. final int fastTimeoutMs = 100; mCm.startCaptivePortalApp(wifiNetwork); + waitForIdle(); + verify(mWiFiNetworkAgent.mNetworkMonitor, never()).launchCaptivePortalApp(); mServiceContext.expectNoStartActivityIntent(fastTimeoutMs); // Turn into a captive portal. @@ -2903,14 +2923,26 @@ public class ConnectivityServiceTest { // Check that startCaptivePortalApp sends the expected command to NetworkMonitor. mCm.startCaptivePortalApp(wifiNetwork); - verify(mWiFiNetworkAgent.mNetworkMonitor, timeout(TIMEOUT_MS).times(1)) - .launchCaptivePortalApp(); + waitForIdle(); + verify(mWiFiNetworkAgent.mNetworkMonitor).launchCaptivePortalApp(); + + // NetworkMonitor uses startCaptivePortal(Network, Bundle) (startCaptivePortalAppInternal) + final Bundle testBundle = new Bundle(); + final String testKey = "testkey"; + final String testValue = "testvalue"; + testBundle.putString(testKey, testValue); + mCm.startCaptivePortalApp(wifiNetwork, testBundle); + final Intent signInIntent = mServiceContext.expectStartActivityIntent(TIMEOUT_MS); + assertEquals(ACTION_CAPTIVE_PORTAL_SIGN_IN, signInIntent.getAction()); + assertEquals(testValue, signInIntent.getStringExtra(testKey)); // Report that the captive portal is dismissed, and check that callbacks are fired mWiFiNetworkAgent.setNetworkValid(); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); captivePortalCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent); + verify(mNotificationManager, times(1)).notifyAsUser(anyString(), + eq(NotificationType.LOGGED_IN.eventId), any(), eq(UserHandle.ALL)); mCm.unregisterNetworkCallback(validatedCallback); mCm.unregisterNetworkCallback(captivePortalCallback); diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java index adaef40b51e3..51dcc3cae219 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java @@ -37,6 +37,7 @@ import static android.net.NetworkStats.SET_DEFAULT; import static android.net.NetworkStats.SET_FOREGROUND; import static android.net.NetworkStats.STATS_PER_IFACE; import static android.net.NetworkStats.STATS_PER_UID; +import static android.net.NetworkStats.TAG_ALL; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStats.UID_ALL; import static android.net.NetworkStatsHistory.FIELD_ALL; @@ -154,6 +155,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { private File mStatsDir; private @Mock INetworkManagementService mNetManager; + private @Mock NetworkStatsFactory mStatsFactory; private @Mock NetworkStatsSettings mSettings; private @Mock IBinder mBinder; private @Mock AlarmManager mAlarmManager; @@ -189,8 +191,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { mService = new NetworkStatsService( mServiceContext, mNetManager, mAlarmManager, wakeLock, mClock, - TelephonyManager.getDefault(), mSettings, new NetworkStatsObservers(), - mStatsDir, getBaseDir(mStatsDir)); + TelephonyManager.getDefault(), mSettings, mStatsFactory, + new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir)); mHandlerThread = new HandlerThread("HandlerThread"); mHandlerThread.start(); Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService); @@ -205,7 +207,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { mService.systemReady(); // Verify that system ready fetches realtime stats - verify(mNetManager).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL); + verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL); mSession = mService.openSession(); assertNotNull("openSession() failed", mSession); @@ -696,7 +698,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { incrementCurrentTime(HOUR_IN_MILLIS); expectDefaultSettings(); expectNetworkStatsSummary(buildEmptyStats()); - when(mNetManager.getNetworkStatsUidDetail(eq(UID_ALL), any())) + when(mStatsFactory.readNetworkStatsDetail(eq(UID_ALL), any(), eq(TAG_ALL))) .thenReturn(new NetworkStats(getElapsedRealtime(), 1) .addValues(uidStats)); when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)) @@ -712,9 +714,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { // // Additionally, we should have one call from the above call to mService#getDetailedUidStats // with the augmented ifaceFilter - verify(mNetManager, times(2)).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL); - verify(mNetManager, times(1)).getNetworkStatsUidDetail( - eq(UID_ALL), eq(NetworkStatsFactory.augmentWithStackedInterfaces(ifaceFilter))); + verify(mStatsFactory, times(2)).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL); + verify(mStatsFactory, times(1)).readNetworkStatsDetail( + eq(UID_ALL), eq(NetworkStatsFactory.augmentWithStackedInterfaces(ifaceFilter)), + eq(TAG_ALL)); assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), TEST_IFACE)); assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), stackedIface)); assertEquals(2, stats.size()); @@ -1062,11 +1065,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { } private void expectNetworkStatsSummaryDev(NetworkStats summary) throws Exception { - when(mNetManager.getNetworkStatsSummaryDev()).thenReturn(summary); + when(mStatsFactory.readNetworkStatsSummaryDev()).thenReturn(summary); } private void expectNetworkStatsSummaryXt(NetworkStats summary) throws Exception { - when(mNetManager.getNetworkStatsSummaryXt()).thenReturn(summary); + when(mStatsFactory.readNetworkStatsSummaryXt()).thenReturn(summary); } private void expectNetworkStatsTethering(int how, NetworkStats stats) @@ -1080,7 +1083,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { private void expectNetworkStatsUidDetail(NetworkStats detail, NetworkStats tetherStats) throws Exception { - when(mNetManager.getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL)).thenReturn(detail); + when(mStatsFactory.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL)) + .thenReturn(detail); // also include tethering details, since they are folded into UID when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)).thenReturn(tetherStats); |