現在表示されているものの上に画面上に通知を作成できるアプリを作りたいです。Go SMS メッセージ ポップアップのようなもの、または次の図の ChatHead のようなもの:
タッチイベントを含めて動的に描画できるとさらに良いのですが、これを行う従来または標準的な方法は何ですか?
例:
ホーム画面でも、アプリドロワーでも、他のアプリでも、クリックしたりドラッグしたりできるアイコンのようなものです。アプリ内のどこにでもドラッグできます。
現在表示されているものの上に画面上に通知を作成できるアプリを作りたいです。Go SMS メッセージ ポップアップのようなもの、または次の図の ChatHead のようなもの:
タッチイベントを含めて動的に描画できるとさらに良いのですが、これを行う従来または標準的な方法は何ですか?
例:
ホーム画面でも、アプリドロワーでも、他のアプリでも、クリックしたりドラッグしたりできるアイコンのようなものです。アプリ内のどこにでもドラッグできます。
あなたが探しているのは System Alert Window です。
StandOutというライブラリがあります。このようなアプリの作成に役立ちます。
これを行うために新しいアクティビティは必要ありません。必要なのは、既存のアクティビティに別のビューを追加して前面に移動し、そのビューに必要なものを描画/書き込むことだけです。
この追加のビューで特別なことをしたい場合は、独自のビュー クラスを作成できます。
class DrawOnTop extends View {
public DrawOnTop(Context activity) {
super(activity);
}
@Override
protected void onDraw(Canvas canvas) {
// put your drawing commands here
}
}
そして、あなたは次のようなことをします
DrawOnTop mDraw = new DrawOnTop(this);
addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mDraw.bringToFront();
次に、強制的に描画するには、mDraw.invalidate(); を使用する必要があります。
最良の方法は、アプリケーションでサービスを開始することです。イメージ ビューを作成します。Image View の LayoutParams を設定します。サービスの作成時に、パラメーターとともにビューをウィンドウ マネージャーに追加します。
ALL SET アプリケーションが閉じられるまで、イメージはウィンドウ (すべてのアプリの任意の画面) に貼り付けられます。
イメージビューに onclicklisteners と ontouchlisteners を追加することもできます。例えば。OnClick リスナーはいくつかのアクションを実行し、Ontouchlistener は画面に沿って画像を移動します。
レイアウト全体の親を RelativeLayout にすることができます。最初の子は、メイン レイアウトの「ルート」です。それ以降は、気まぐれに配置できるオーバーレイと見なすことができます。
例:
<RelativeLayout>
<LinearLayout>
... Main Layout here ...
</LinearLayout>
<TextView left="20dip" top="20dip" text="Overlay" alpha="0.7" />
</RelativeLayout>