Add more Wi-Fi DPP UI features.

1. Use ConstraintLayout to fix footer buttons at bottom
2. ScrollViews have all other UI components excepts footer buttons
3. Use style/SuwGlifButton for buttons
4. Fix scan fragment crash when rotating screen

Bug: 118794978
Test: manual test
Change-Id: I509b0156c4835c75da75fb7ac4c82f55a0b506a1
This commit is contained in:
Arc Wang
2019-01-07 11:51:42 +08:00
parent 1cb7e12fab
commit 8eda83d071
11 changed files with 189 additions and 94 deletions

View File

@@ -23,6 +23,7 @@ LOCAL_USE_AAPT2 := true
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx-constraintlayout_constraintlayout \
androidx.slice_slice-builders \
androidx.slice_slice-core \
androidx.slice_slice-view \
@@ -40,6 +41,7 @@ LOCAL_JAVA_LIBRARIES := \
ims-common
LOCAL_STATIC_JAVA_LIBRARIES := \
androidx-constraintlayout_constraintlayout-solver \
androidx.lifecycle_lifecycle-runtime \
androidx.lifecycle_lifecycle-extensions \
guava \

View File

@@ -19,29 +19,40 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.android.settings.wifi.qrcode.QrPreviewLayout
android:layout_width="@dimen/qrcode_preview_size"
android:layout_height="@dimen/qrcode_preview_size"
android:layout_gravity="center">
<TextureView
android:id="@+id/preview_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
<com.android.settings.wifi.qrcode.QrDecorateView
android:id="@+id/decorate_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</com.android.settings.wifi.qrcode.QrPreviewLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<include layout="@layout/wifi_dpp_fragment_header"/>
<com.android.settings.wifi.qrcode.QrPreviewLayout
android:layout_width="@dimen/qrcode_preview_size"
android:layout_height="@dimen/qrcode_preview_size">
<TextureView
android:id="@+id/preview_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
<com.android.settings.wifi.qrcode.QrDecorateView
android:id="@+id/decorate_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"/>
</com.android.settings.wifi.qrcode.QrPreviewLayout>
<TextView android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@@ -15,7 +15,7 @@
limitations under the License.
-->
<ScrollView
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
@@ -27,4 +27,4 @@
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</ScrollView>
</LinearLayout>

View File

@@ -15,31 +15,49 @@
limitations under the License.
-->
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ImageView
android:id="@+id/wifi_ap_picture_view"
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
android:layout_height="match_parent">
<TextView
android:id="@+id/choose_different_network"
android:layout_width="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ImageView
android:id="@+id/wifi_ap_picture_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/header"/>
<Button
android:id="@+id/choose_different_network"
style="@style/SuwGlifButton.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/wifi_ap_picture_view"
android:layout_marginTop="8dp"
android:text="@string/wifi_dpp_choose_different_network"/>
</LinearLayout>
</ScrollView>
<include
layout="@layout/wifi_dpp_fragment_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="@string/wifi_dpp_choose_different_network"/>
app:layout_constraintBottom_toBottomOf="parent"/>
<include layout="@layout/wifi_dpp_fragment_footer"
android:gravity="center|bottom"/>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -15,21 +15,39 @@
limitations under the License.
-->
<LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ListView android:id="@+id/saved_wifi_network_list"
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
android:layout_height="match_parent">
<include layout="@layout/wifi_dpp_fragment_footer"
android:gravity="center|bottom"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
</LinearLayout>
<include layout="@layout/wifi_dpp_fragment_header"/>
<ListView android:id="@+id/saved_wifi_network_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/header"/>
</LinearLayout>
</ScrollView>
<include
layout="@layout/wifi_dpp_fragment_footer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -18,16 +18,15 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
android:layout_height="wrap_content"
style="@style/SuwGlifButtonBar">
<Button
android:id="@+id/button_left"
style="@style/SuwGlifButton.Secondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:text="left"
style="?android:attr/borderlessButtonStyle"/>
android:layout_gravity="start"/>
<Space
android:layout_width="0dp"
@@ -36,9 +35,9 @@
<Button
android:id="@+id/button_right"
style="@style/SuwGlifButton.Primary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:text="right"/>
android:layout_gravity="end"/>
</LinearLayout>

View File

@@ -22,14 +22,27 @@
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/qrcode_view"
android:layout_width="@dimen/qrcode_size"
android:layout_height="@dimen/qrcode_size"
android:src="@android:color/transparent"
android:layout_gravity="center"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<include layout="@layout/wifi_dpp_fragment_header"/>
<ImageView
android:id="@+id/qrcode_view"
android:layout_width="@dimen/qrcode_size"
android:layout_height="@dimen/qrcode_size"
android:src="@android:color/transparent"/>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@@ -19,35 +19,45 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_height="match_parent">
<include layout="@layout/wifi_dpp_fragment_header"/>
<com.android.settings.wifi.qrcode.QrPreviewLayout
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextureView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
<com.android.settings.wifi.qrcode.QrDecorateView
android:id="@+id/decorate_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</com.android.settings.wifi.qrcode.QrPreviewLayout>
<TextView
android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="@string/wifi_dpp_could_not_detect_valid_qr_code"
android:visibility="invisible"
android:textColor="?android:attr/colorError"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_horizontal">
<include layout="@layout/wifi_dpp_fragment_header"/>
<com.android.settings.wifi.qrcode.QrPreviewLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextureView
android:id="@+id/preview_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<com.android.settings.wifi.qrcode.QrDecorateView
android:id="@+id/decorate_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.android.settings.wifi.qrcode.QrPreviewLayout>
<TextView
android:id="@+id/error_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/wifi_dpp_could_not_detect_valid_qr_code"
android:visibility="invisible"
android:textColor="?android:attr/colorError"/>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@@ -28,7 +28,6 @@ import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
@@ -41,7 +40,7 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
private static final String TAG = "WifiDppAddDeviceFragment";
private ImageView mWifiApPictureView;
private TextView mChooseDifferentNetwork;
private Button mChooseDifferentNetwork;
private Button mButtonLeft;
private Button mButtonRight;
@@ -109,10 +108,16 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment {
wifiNetworkConfig.getSsid()));
mWifiApPictureView = view.findViewById(R.id.wifi_ap_picture_view);
mChooseDifferentNetwork = view.findViewById(R.id.choose_different_network);
mChooseDifferentNetwork.setOnClickListener(v -> getFragmentManager().popBackStack());
mButtonLeft = view.findViewById(R.id.button_left);
mButtonLeft.setText(R.string.cancel);
mButtonLeft.setOnClickListener(v -> getFragmentManager().popBackStack());
mButtonLeft.setOnClickListener(v -> {
getActivity().setResult(Activity.RESULT_CANCELED);
getActivity().finish();
});
mButtonRight = view.findViewById(R.id.button_right);
mButtonRight.setText(R.string.wifi_dpp_share_wifi);

View File

@@ -64,6 +64,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
// Key for Bundle usage
private static final String KEY_PUBLIC_URI = "key_public_uri";
private static final String KEY_IS_CONFIGURATOR_MODE = "key_is_configurator_mode";
private QrCamera mCamera;
private TextureView mTextureView;
@@ -71,7 +72,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
private TextView mErrorMessage;
/** true if the fragment working for configurator, false enrollee*/
private final boolean mIsConfiguratorMode;
private boolean mIsConfiguratorMode;
/** The SSID of the Wi-Fi network which the user specify to enroll */
private String mSsid;
@@ -79,6 +80,15 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
/** QR code data scanned by camera */
private WifiQrCode mWifiQrCode;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mIsConfiguratorMode = savedInstanceState.getBoolean(KEY_IS_CONFIGURATOR_MODE);
}
}
@Override
public int getMetricsCategory() {
if (mIsConfiguratorMode) {
@@ -368,4 +378,11 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl
}
}
};
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(KEY_IS_CONFIGURATOR_MODE, mIsConfiguratorMode);
super.onSaveInstanceState(outState);
}
}

View File

@@ -25,6 +25,7 @@ LOCAL_RESOURCE_DIR += \
$(SETTINGS_AOSP_PATH)/res
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx-constraintlayout_constraintlayout \
androidx.slice_slice-builders \
androidx.slice_slice-core \
androidx.slice_slice-view \
@@ -42,6 +43,7 @@ LOCAL_JAVA_LIBRARIES := \
ims-common
LOCAL_STATIC_JAVA_LIBRARIES := \
androidx-constraintlayout_constraintlayout-solver \
androidx.lifecycle_lifecycle-runtime \
androidx.lifecycle_lifecycle-extensions \
guava \