我开发了一个Android应用程序,我需要创建一个“假锁屏”。我解释一下。
应用程序应该显示黑屏,就像屏幕被锁定一样(简单),然后我想在用户点击锁定/解锁手机按钮时显示假锁屏。
我的问题是,当我使用当前壁纸设置应用程序背景时(使用壁纸管理器),背景不会被“裁剪”。背景图像适合屏幕,而不是像手机的“主屏幕”一样,适合桌面数量。
我尝试使用getBuiltInDrawable(FLAG_LOCK),但它仅在API 24中可用,当我尝试时,结果不是我期望的结果= /
是否有人对此问题有所了解?
提前谢谢你。 巴普蒂斯特。
答案 0 :(得分:0)
好的,所以你需要
1)使用没有操作栏的FullScreen主题创建活动,因此它看起来不像应用程序。为此,您将在styles.xml中创建一个样式并将其应用于manifest.xml
Full Screen Theme for AppCompat
2)对于背景图片,请使用ImageView
。 ImageViews
开箱即用的scaleType
属性允许您选择不同的模式:FIT,Center Crop等...
https://developer.android.com/reference/android/widget/ImageView.ScaleType.html
3)创建其余逻辑以进入Pin。并显示您不同的模拟图像。有一个很好的组件非常适合你的“项目”,它被称为ViewFlipper
,基本上可以让你把所有图像放在里面并选择要显示的图像。您的根布局看起来或多或少会像这样:
<ViewFlipper
android:id="@+id/flipper"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- page 0: the lock screen mock -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<ImageView
android:src="@drawable/mock_lock_screen"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<EditText
android:id="@+id/pinCode"
android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:hint="PIN CODE" />
</FrameLayout>
<!-- page 1: chrome screen mock-->
<ImageView
android:src="@drawable/mock_chrome"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- page 2: wikipedia screen mock-->
<ImageView
android:src="@drawable/mock_wiki"
android:scaleType="centerCrop"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
.
.
</ViewFlipper>
然后在活动中,您可以显示锁定屏幕和任何模拟页面:
ViewFlipper mFlipper;
@Override
public void onCreate(Bundle savedInstanceState) {
.
.
mFlipper = (ViewFlipper)findViewById(R.id.flipper);
.
.
.
}
并更改显示的屏幕
mFlipper.setDisplayedChild(0); // will show lock screen
mFlipper.setDisplayedChild(1); // will show chrome mock
mFlipper.setDisplayedChild(2); // will show wikipedia mock
希望你明白这个想法!快乐的编码。