Android 安卓-如何制作真正的假锁屏

Android 安卓-如何制作真正的假锁屏,android,lockscreen,Android,Lockscreen,我开发了一个Android应用程序,我需要创建一个“假锁屏”。我解释我 应用程序应该显示一个黑屏,就像屏幕被锁定一样(简单),然后当用户点击锁定/解锁手机按钮时,我想显示一个假锁定屏幕 我的问题是,当我用当前墙纸设置应用程序背景时(使用墙纸管理器获取),背景没有被“裁剪”。背景图像可以显示在屏幕上,而不是像手机的“主屏幕”那样显示在桌面上 我尝试使用getBuiltInDrawable(FLAG_LOCK),但它只在API 24中可用,而且,当我尝试时,结果并不是我所期望的=/ 有人对这个问题有

我开发了一个Android应用程序,我需要创建一个“假锁屏”。我解释我

应用程序应该显示一个黑屏,就像屏幕被锁定一样(简单),然后当用户点击锁定/解锁手机按钮时,我想显示一个假锁定屏幕

我的问题是,当我用当前墙纸设置应用程序背景时(使用墙纸管理器获取),背景没有被“裁剪”。背景图像可以显示在屏幕上,而不是像手机的“主屏幕”那样显示在桌面上

我尝试使用getBuiltInDrawable(FLAG_LOCK),但它只在API 24中可用,而且,当我尝试时,结果并不是我所期望的=/

有人对这个问题有想法吗

先谢谢你。 巴普蒂斯特。

好的,那么你需要

1) 使用全屏主题创建您的活动,而不使用操作栏,因此它看起来不像一个应用程序。为此,您将在styles.xml中创建一个样式,并将其应用到manifest.xml中

2) 对于背景图像,请使用
ImageView
ImageView
有一个现成的
scaleType
属性,允许您选择不同的模式:拟合、中心裁剪等

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>
和更改显示屏幕

  mFlipper.setDisplayedChild(0); // will show lock screen
  mFlipper.setDisplayedChild(1); // will show chrome mock
  mFlipper.setDisplayedChild(2); // will show wikipedia mock
希望你能明白!愉快的编码。

好的,所以您需要

1) 使用全屏主题创建您的活动,而不使用操作栏,因此它看起来不像一个应用程序。为此,您将在styles.xml中创建一个样式,并将其应用到manifest.xml中

2) 对于背景图像,请使用
ImageView
ImageView
有一个现成的
scaleType
属性,允许您选择不同的模式:拟合、中心裁剪等

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>
和更改显示屏幕

  mFlipper.setDisplayedChild(0); // will show lock screen
  mFlipper.setDisplayedChild(1); // will show chrome mock
  mFlipper.setDisplayedChild(2); // will show wikipedia mock

希望你能明白!愉快的编码。

您应该发布一些代码并重构您对特定问题的答案,这似乎就是如何更改图像缩放模式。@rupps是的,我可以,但除了如何更改图像缩放模式的问题之外,我还想知道一些好的做法。最好是假锁屏还是真的做锁屏?如果我伪造了一个锁屏,我怎么能显示顶部的系统用户界面而不是底部的系统用户界面等等。。。如果可能的话,我想讨论一下我的一般问题,如何组织我的应用程序来伪造锁屏:)我不认为你真的可以制作一个真正的锁屏,让任意设备使用它,lockscreen应用程序以系统权限运行,您只能通过将其注入自定义rom或使用需要根访问权限的外来内容来替换它。你最好用一个花哨的应用程序来伪装它,祈祷用户没有意识到。但不要做肮脏的事!为什么不给下一个口袋妖怪编码呢?因为这不是我想要的哈哈:D事实上,如果我暴露了我想要的东西:我想要一个假锁屏,根据解锁手机时使用的pin码,我会显示不同的活动。例如:我是一名学生,我的教授在我身后,我运行应用程序,黑屏,教授:“嘿,学生,你在干什么?!”,学生:“我在为你的练习寻求帮助!!”,似乎要解锁手机,输入pin码3003并显示chrome的图像,但如果是pin码3004,则是谷歌地图或其他任何东西的图像!没什么讨厌的!:)您应该发布一些代码并重构您对特定问题的答案,这似乎就是如何更改图像缩放模式。@rupps是的,我可以,但除了如何更改图像缩放模式的问题之外,我还想了解一些良好的做法。最好是假锁屏还是真的做锁屏?如果我伪造了一个锁屏,我怎么能显示顶部的系统用户界面而不是底部的系统用户界面等等。。。如果可能的话,我想讨论一下我的一般问题,如何组织我的应用程序来伪造锁屏:)我不认为你真的可以制作一个真正的锁屏,让任意设备使用它,lockscreen应用程序以系统权限运行,您只能通过将其注入自定义rom或使用需要根访问权限的外来内容来替换它。你最好用一个花哨的应用程序来伪装它,祈祷用户没有意识到。但不要做肮脏的事!为什么不给下一个口袋妖怪编码呢?因为这不是我想要的哈哈:D事实上,如果我暴露了我想要的东西:我想要一个假锁屏,根据解锁手机时使用的pin码,我会显示不同的活动。例如:我是一名学生,我的教授在我身后,我运行应用程序,黑屏,教授:“嘿,学生,你在干什么?!”,学生:“我在为你的练习寻求帮助!!”,似乎要解锁手机,输入pin码3003并显示chrome的图像,但如果是pin码3004,则是谷歌地图或其他任何东西的图像!没什么讨厌的!:)非常感谢你!我想这是我期待的,我需要的所有信息都可能在这里!所以我尝试了你的解决方案,它很酷,符合我的要求。唯一剩下的问题是背景(和墙纸一样)不合适。事实上,如果匹配父宽度,则背景的宽度为1个屏幕。但是如果我在安卓的主屏幕上,比如2个主屏幕,宽度是