Activityはdialogとして、カスタムフィレットバックグラウンドを追加する方法を示します.

12219 ワード

私たちはビジネスクラスに判断ロジックを追加することがあります.dialogをポップアップする必要があります.アンドロイドが持っているdialogは実現できないかもしれませんが、ページジャンプを行い、activityをdialogとして弾くことができます.
activityをdialogに設定する方法
Activityのトピックを変更します.
android:theme="@style/ActivityDialogStyle"のトピックの具体的な操作は、次のとおりです.

AnimSlideBottomはactivityの出現と消滅のアニメーションです

slide_bottom_in.xml

<translate
    android:duration="250"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="100%"
    android:toYDelta="0"
    android:fillAfter="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

translate>

slide_bottom_out.xml

<translate
    android:duration="250"
    android:fromXDelta="0"
    android:toXDelta="0"
    android:fromYDelta="0"
    android:toYDelta="100%"
    android:fillAfter="true"
    xmlns:android="http://schemas.android.com/apk/res/android">

translate>

フィレットバックグラウンドの設定(一)
最外層レイアウトにbackgroundを円角背景として直接設定すればよい.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/prevention_view"
              android:layout_width="300dp"
              android:layout_height="200dp"
              android:gravity="center"
              android:paddingLeft="4dp"
              android:paddingRight="4dp"
              android:background="@drawable/prevention_corners"
              android:orientation="horizontal">

    <Button
        android:layout_margin="10dp"
        android:layout_width="100dp"
        android:layout_height="130dp"
        android:textSize="20sp"
        android:gravity="center"
        android:text="  "/>


LinearLayout>

フィレットバックグラウンドの設定(2)
また、activityでフィレットバックグラウンドを設定、onAttachedToWindowで設定しないとウィンドウの幅が取得する.decorViewを使用して、ウィンドウの背景を設定します.原理はフィレットダイアログスタイルを実装するActivityを参照してください
@Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        View view = getWindow().getDecorView();
        WindowManager.LayoutParams lp = (WindowManager.LayoutParams)view.getLayoutParams();
        lp.gravity = Gravity.CENTER;
        //       xml     
//      lp.width = (dm.widthPixels * 4) / 5;
//      lp.height = (dm.widthPixels * 4) / 5;
        getWindowManager().updateViewLayout(view,lp);
        //                          
        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
view.setBackgroundResource(R.drawable.prevention_corners);//    
    }

prevention_corners.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="30dp"/>
shape>

私のこの2つの方法はすべて使いましたが、円角の背景はすべて展示されていません.なぜなら、私たちのフレームの下部にページのレイアウトが追加され、中間に詰まっているため、私は上部と下部の設定が無効で、中間のレイアウトに設定してこそ有効です.