]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/res/layout/main_framelayout.xml
Fix problems with audio still playing after a tab is closed. https://redmine.stoutne...
[PrivacyBrowserAndroid.git] / app / src / main / res / layout / main_framelayout.xml
index 3057c9220f4c7f82817ce313b662b3d19d251dbe..f912025de1da27d4800cd99316370ffcb9bedb78 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 
 <!--
-  Copyright © 2015-2017,2019 Soren Stoutner <soren@stoutner.com>.
+  Copyright © 2015-2017,2019-2020 Soren Stoutner <soren@stoutner.com>.
 
   This file is part of Privacy Browser <https://www.stoutner.com/privacy-browser>>.
 
         android:layout_height="match_parent"
         android:layout_width="match_parent" >
 
-        <!-- The relative layout contains the AdView and the coordinator layout, which contains the rest of the views.
-            `android:fitsSystemWindows="true"` moves the toolbar below the system status bar but lets the drawers slide under the translucent status bar.
-            When it is specified, the theme should include `<item name="android:windowTranslucentStatus">true</item>`. -->
+        <!-- The relative layout contains the AdView and the coordinator layout, which contains the rest of the views. -->
         <RelativeLayout
             android:id="@+id/main_content_relativelayout"
             android:layout_height="match_parent"
-            android:layout_width="match_parent"
-            android:fitsSystemWindows="true" >
+            android:layout_width="match_parent" >
 
             <!-- Include the AdView.  For the standard flavor, this just includes a TextView with `visibility="gone"`. -->
             <include layout="@layout/adview" />
                 android:focusable="true"
                 android:focusableInTouchMode="true" >
 
-                <!-- The theme has to be defined here because the activity uses a `NoActionBar` theme. -->
+                <!-- The app bar theme must be specified here because the activity uses a `NoActionBar` theme.  The background is set programmatically based on the proxy status. -->
                 <com.google.android.material.appbar.AppBarLayout
+                    android:id="@+id/appbar_layout"
                     android:layout_height="wrap_content"
                     android:layout_width="match_parent"
-                    android:theme="@style/PrivacyBrowserAppBarLight" >
+                    android:theme="@style/PrivacyBrowserAppBar" >
 
+                    <!-- The toolbar.  It is initially `visibility="gone"` so it doesn't display while the blocklists are loading. -->
                     <androidx.appcompat.widget.Toolbar
                         android:id="@+id/toolbar"
                         android:layout_height="wrap_content"
                         android:layout_width="match_parent"
+                        android:visibility="gone"
                         app:layout_scrollFlags="scroll|enterAlways|snap" />
 
-                    <HorizontalScrollView
-                        android:layout_height="wrap_content"
-                        android:layout_width="match_parent"
-                        app:layout_scrollFlags="scroll|enterAlways|snap" >
-
-                        <LinearLayout
-                            android:layout_height="wrap_content"
-                            android:layout_width="wrap_content"
-                            android:orientation="horizontal" >
-
-                            <com.google.android.material.tabs.TabLayout
-                                android:id="@+id/tablayout"
-                                android:layout_height="wrap_content"
-                                android:layout_width="wrap_content"
-                                app:tabIndicatorGravity="top"
-                                app:tabMode="scrollable" />
-
-                            <!-- `style="?android:borderlessButtonStyle"` shows a visual indication when the image view is tapped. -->
-                            <ImageView
-                                android:layout_height="wrap_content"
-                                android:layout_width="wrap_content"
-                                android:layout_gravity="center_vertical"
-                                android:src="@drawable/add_light"
-                                android:tint="?attr/addTabIconTintColor"
-                                android:onClick="addTab"
-                                android:contentDescription="@string/add_tab"
-                                style="?android:attr/borderlessButtonStyle" />
-                        </LinearLayout>
-                    </HorizontalScrollView>
-
-                    <!-- The find on page linear layout.  It is initially `visibility="gone"`. -->
+                    <!-- The find on page linear layout.  It is initially `visibility="gone"` so it doesn't display while the blocklists are loading. -->
                     <LinearLayout
                         android:id="@+id/find_on_page_linearlayout"
                         android:layout_height="wrap_content"
                         android:layout_width="match_parent"
                         android:orientation="horizontal"
-                        android:visibility="gone" >
+                        android:visibility="gone"
+                        app:layout_scrollFlags="scroll|enterAlways|snap" >
 
                         <!-- `android:imeOptions="actionDone"` sets the keyboard to have a `check mark` key instead of a `new line` key. -->
                         <EditText
                             android:layout_marginEnd="4dp"
                             android:text="@string/zero_of_zero" />
 
+                        <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
                         <ImageView
                             android:id="@+id/find_previous"
                             android:src="@drawable/previous"
                             android:layout_marginStart="4dp"
                             android:layout_marginEnd="4dp"
                             android:layout_gravity="center_vertical"
-                            android:tint="?attr/findOnPageIconTintColor"
+                            android:background="?attr/selectableItemBackground"
                             android:contentDescription="@string/previous"
-                            android:onClick="findPreviousOnPage" />
+                            android:onClick="findPreviousOnPage"
+                            app:tint="?attr/findOnPageIconTintColor" />
 
+                        <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
                         <ImageView
                             android:id="@+id/find_next"
                             android:src="@drawable/next"
                             android:layout_marginStart="4dp"
                             android:layout_marginEnd="4dp"
                             android:layout_gravity="center_vertical"
-                            android:tint="?attr/findOnPageIconTintColor"
+                            android:background="?attr/selectableItemBackground"
                             android:contentDescription="@string/next"
-                            android:onClick="findNextOnPage" />
+                            android:onClick="findNextOnPage"
+                            app:tint="?attr/findOnPageIconTintColor" />
 
+                        <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
                         <ImageView
                             android:id="@+id/close_find"
-                            android:src="@drawable/close_light"
+                            android:src="@drawable/close_day"
                             android:layout_width="35dp"
                             android:layout_height="35dp"
                             android:layout_marginStart="4dp"
                             android:layout_marginEnd="8dp"
                             android:layout_gravity="center_vertical"
-                            android:tint="?attr/findOnPageIconTintColor"
+                            android:background="?attr/selectableItemBackground"
                             android:contentDescription="@string/close"
-                            android:onClick="closeFindOnPage" />
+                            android:onClick="closeFindOnPage"
+                            app:tint="?attr/findOnPageIconTintColor" />
+                    </LinearLayout>
+
+                    <!-- The tab linear layout.  It sets the background to the right of the add tab button.  It is initially `visibility="gone"` so it doesn't display while the blocklists are loading. -->
+                    <LinearLayout
+                        android:id="@+id/tabs_linearlayout"
+                        android:layout_height="wrap_content"
+                        android:layout_width="wrap_content"
+                        android:orientation="horizontal"
+                        android:visibility="gone"
+                        app:layout_scrollFlags="scroll|enterAlways|snap" >
+
+                        <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
+                        <ImageView
+                            android:layout_height="match_parent"
+                            android:layout_width="wrap_content"
+                            android:layout_gravity="center_vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:src="@drawable/close_day"
+                            android:background="?attr/selectableItemBackground"
+                            android:onClick="closeTab"
+                            android:contentDescription="@string/close_tab"
+                            app:tint="?attr/addTabIconTintColor" />
+
+                        <com.google.android.material.tabs.TabLayout
+                            android:id="@+id/tablayout"
+                            android:layout_height="wrap_content"
+                            android:layout_width="0dp"
+                            android:layout_weight="1"
+                            app:tabIndicatorGravity="top"
+                            app:tabMode="scrollable" />
+
+                        <!-- `android:background="?attr/selectableItemBackground"` adds a ripple animation on touch. -->
+                        <ImageView
+                            android:layout_height="match_parent"
+                            android:layout_width="wrap_content"
+                            android:layout_gravity="center_vertical"
+                            android:paddingStart="10dp"
+                            android:paddingEnd="10dp"
+                            android:src="@drawable/add"
+                            android:background="?attr/selectableItemBackground"
+                            android:onClick="addTab"
+                            android:contentDescription="@string/add_tab"
+                            app:tint="?attr/addTabIconTintColor" />
                     </LinearLayout>
                 </com.google.android.material.appbar.AppBarLayout>
 
                     android:layout_height="match_parent"
                     app:layout_behavior="@string/appbar_scrolling_view_behavior" >
 
-                        <androidx.viewpager.widget.ViewPager
+                        <com.stoutner.privacybrowser.views.NoSwipeViewPager
                             android:id="@+id/webviewpager"
                             android:layout_width="match_parent"
                             android:layout_height="match_parent" />
             android:layout_height="match_parent"
             android:layout_width="wrap_content"
             android:layout_gravity="start"
-            app:headerLayout="@layout/navigation_header"
             app:menu="@menu/webview_navigation_menu"
             app:itemIconTint="?attr/navigationIconTintColor" />
 
         <include layout="@layout/bookmarks_drawer" />
     </androidx.drawerlayout.widget.DrawerLayout>
 
-    <!-- `The full screen video frame layout is used to display full screen videos.  It is initially `android:visibility="gone"` to hide it from view. -->
+    <!-- The full screen video frame layout is used to display full screen videos.  It is initially `android:visibility="gone"` to hide it from view. -->
     <FrameLayout
         android:id="@+id/full_screen_video_framelayout"
         android:layout_height="match_parent"
         android:layout_width="match_parent"
         android:visibility="gone" />
+
+    <!-- The loading blocklists relative layout displays when the app first starts.  It is hidden once the blocklists are populated. -->
+    <RelativeLayout
+        android:id="@+id/loading_blocklists_relativelayout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ImageView
+            android:id="@+id/privacy_browser_logo"
+            android:layout_height="256dp"
+            android:layout_width="256dp"
+            android:layout_centerInParent="true"
+            android:src="@drawable/privacy_browser_foreground"
+            tools:ignore="contentDescription" />
+
+        <TextView
+            android:id="@+id/loading_blocklist_textview"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@id/privacy_browser_logo"
+            android:layout_centerHorizontal="true"
+            android:layout_margin="10dp"
+            android:textSize="16sp"
+            android:textAlignment="center"
+            android:textColor="?android:attr/textColorPrimary" />
+    </RelativeLayout>
 </FrameLayout>
\ No newline at end of file