2012-07-12 9 views

答えて

11

これは、既存のアクティビティの上にオーバーレイを使用して行われます。ここで見つけたソースは、githubにあり、アンドロイドのstackexchange.com質問にあった概念証明を示すために、障害を抱えていて画面をスクロールできず、これを便利に行う方法を探していた人の質問をこれは、アクティビティの上にオーバーレイされたテキスト(実際にはボタン)をタップするだけで、最小の動きで「ページアップ/ページダウン」を表示するコードをまとめたものです。しかし、Androidとセキュリティの仕組みのせいで、スクロールイベントは現在実行中のアクティビティに注入できませんでした。

それが動作する方法はこれです、onCreate活動からこの

があります
WindowManager.LayoutParams layOutParams = new WindowManager.LayoutParams(
       WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, 
       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, 
       PixelFormat.TRANSLUCENT); 

必要とされているフラグがWindowManager.LayoutParams.TYPE_SYSTEM_OVERLAYWindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCHです。

これは、タッチが確実に処理されることです。これは、タッチイベントが領域に当たったときにそれを監視し、それに応じて行動することを意味します。ビューのonTouchイベントでの「聴く」ことで、それは次のとおりです。

LayoutInflater layOutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE); 
View myView = layOutInflater.inflate(R.layout.myview, null); 

myView.setOnTouchListener(new OnTouchListener(){ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     .... 
    } 
}); 

例えば、

Button myButton = (Button)myView.findViewById(R.id.myButton); 
Rect outRectHit = new Rect(); 
myButton.getHitRect(outRectHit); 

は、今、私たちが判断する必要があり、そのボタンのウィジェットを使用して、そのmyviewレイアウト内のボタンを想像

float x = event.getX(); 
float y = event.getY(); 
if (x > outRectHit.left && x < outRectHit.right && 
    y > outRectHit.top && y < outRectHit.bottom){ 
    ... Handle this accordingly 
} 

この短い要約E:onTouchハンドラ内で発生したタッチの境界の「衝突」、そのようなことをどのようなアクティビティのオーバーレイとして行うのかを説明します。

コードがデバッグされ、どのような図形や図形にも干渉がないことを確認してください。たとえば、アクティビティが実際にOpenGLゲームである場合はどうなりますか、どうしますか?

これは、何を監視する必要があるかを説明するためのものです。

5

Tooleap SDKをご覧ください。 通常のAndroidアクティビティをフローティングウィジェットに変える最も簡単な方法を提供します。

例えば、あなたがMyActivity

Intent intent = new Intent(context, MyActivity.class); 
TooleapPopOutMiniApp miniApp = new TooleapPopOutMiniApp(context, intent); 
Tooleap tooleap = Tooleap.getInstance(context); 
tooleap.addMiniApp(miniApp); 

と呼ばれる活動を持っているとしましょうMyActivityは今、他のアプリケーションの上に浮いウィジェットとして利用できるようになります。

+0

有望そうですね、それは無料ですか? –

関連する問題