2017-03-22 17 views
0

私はAndroidアプリケーションを開発し、私は "偽のlockscreen"を作成する必要があります。私は私を説明する。Android - 本当の偽のロック画面を作る方法

アプリケーションは、画面がロックされているような黒い画面を表示する必要があります。ユーザーがロック/ロック解除の電話ボタンをタップすると、偽のロック画面が表示されます。

私の問題は、現在の壁紙(壁紙マネージャで取得)でアプリケーションの背景を設定すると、背景が「切り取られない」ことです。背景画像は、電話の「ホームスクリーン」のように、デスクトップの数に合わせて画面に収まる。

私がしようとすると、結果は私が=/

を期待していものではありません、私はgetBuiltInDrawable(FLAG_LOCK)を使用しようとするが、それはAPI 24からのみ利用可能だとは、質問のアイデアを持って誰かがありますここに ?

ありがとうございます。 Baptiste。

+0

イメージスケーリングモードを変更する方法のように、特定の問題の答えをいくつか掲示してリファクタリングする必要があります。 – rupps

+0

@ruppsはい、イメージスケーリングモードを変更する方法の問題のほかに、私も良い方法について知りたいと思います。 ロック画面を偽装したり、本当にロック画面を作成する方が良いでしょうか?私がロック画面を偽装した場合、トップシステムUIを表示するにはどうすればいいのですか? 可能であれば、私は一般的な問題、ロック画面を偽造するためにアプリケーションを整理する方法について議論したいと思います: ) – Baptiste

+1

私はあなたが本当に本当のロック画面を作って、任意のデバイスがそれを使うようにすることはできないと思う、lockscreenアプリはシステム特権で実行され、あなたはカスタムROMにそれを注入するか、ルートアクセスを必要とするエキゾチックなもの。あなたは、派手なアプリでそれを偽造し、ユーザーに気づかないように祈る方がよいでしょう。しかし、厄介なことをしないでください!代わりにポケモンの次のコードを書くのはなぜですか? – rupps

答えて

0

)あなたは

1に必要なので、[OK]を、それはアプリのように見えないので、ノーアクションバーでの全画面のテーマを使用して、アクティビティを作成します。それを行うには、ImageViewを使用する、のstyles.xmlでスタイルを作成して、背景画像の場合は、あなたのmanifest.xmlに

Full Screen Theme for AppCompat

2)にこれを適用します。

https://developer.android.com/reference/android/widget/ImageView.ScaleType.html

3)はPINを入力する残りのロジックを作成... FIT、センタークロップなど:ImageViewsあなたが異なるモードを選択することができます箱から出しscaleType性質を持っています。あなたのさまざまな模擬画像を表示します。あなたの "プロジェクト"に実際に合う素晴らしいコンポーネントがあります。それは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 

あなたはアイデアを得ることを願っています!幸せなコーディング。

+0

ありがとうございました! 私はこれが私が期待しているものだと思っています。私が必要とするすべての情報はおそらくここにあります! – Baptiste

+0

私はあなたのソリューションを試して、それは私が欲しいものはかなりクールで元気です。残っている問題は、背景(壁紙と同じ)が正しく収まらないことです。実際、match_parentの幅では、背景の幅は1スクリーンになります。しかし、Androidのホーム画面で、例えば2ホーム画面の場合、幅は2画面です。 ホーム画面の番号を取得するクラスまたはサービスはありますか?私はhttp://stackoverflow.com/questions/6086040/get-number-of-home-screens-in-androidまたはDisplayMetricsを見つけましたが、私の場合はそれが役に立つとは思えません。:( – Baptiste

関連する問題