zoukankan      html  css  js  c++  java
  • Android 从下往上弹出 DialogFragment 的关键代码

    //java代码:
    public class CountrySelectDialog extends AppCompatDialogFragment{
    
      public static CountrySelectDialog newInstance() {
        Bundle args = new Bundle();
        CountrySelectDialog fragment = new CountrySelectDialog();
        fragment.setArguments(args);
        return fragment;
      }
    
      @Override
      public void onStart() {
        super.onStart();
        setStyle(AppCompatDialogFragment.STYLE_NORMAL, R.style.BottomDialog);//设置自定义style
    
        Window window = getDialog().getWindow();
        window.setBackgroundDrawable(null);//必须的
        WindowManager.LayoutParams lp = window.getAttributes();
        lp.gravity = Gravity.BOTTOM;//在下边
        lp.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(lp);
    
        getDialog().setOnDismissListener(dialog -> {
          	//todo,关闭dialog的回调监听
          }
        });
    
      }
    
      @Override
      public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
          @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.xxx, container, false);
      }
    
      public void show(FragmentManager supportFragmentManager) {
        show(supportFragmentManager, getClass().getName());
        setStyle(AppCompatDialogFragment.STYLE_NORMAL, R.style.BottomDialog);//show的时候设置,不然第一次style无效
      }
    
    }
    
    
    //styles.xml代码:
    <style name="BottomDialog" parent="Theme.AppCompat.Light.Dialog">
      <item name="android:windowAnimationStyle">@style/BottomDialogAnimation</item>
    </style>
    
    <style name="BottomDialogAnimation">
      <item name="android:windowEnterAnimation">@anim/bottom_dialog_in</item>
      <item name="android:windowExitAnimation">@anim/bottom_dialog_out</item>
    </style>
    
    
    // res/anim/bottom_dialog_in.xml
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/accelerate_interpolator"
      >
      <translate
        android:duration="300"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:fromYDelta="100%"
        android:toXDelta="0"
        android:toYDelta="0">
    
      </translate>
      <alpha
        android:duration="300"
        android:fromAlpha="0.0"
        android:toAlpha="1.0"/>
    </set>
    
    // res/anim/bottom_dialog_out.xml
    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/accelerate_interpolator">
      <translate
        android:duration="300"
        android:fillAfter="true"
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="0"
        android:toYDelta="100%">
    
      </translate>
      <alpha
        android:duration="300"
        android:fromAlpha="1.0"
        android:toAlpha="0.0"/>
    </set>
    

      

  • 相关阅读:
    关于Python3.7和Python3.6中元组类型数据内存存储问题
    PHP中的语法特点小结
    PHP中的魔术常量
    Python02期(北京)课程笔记索引
    初识python
    Django项目功能执行逻辑流程图之用户页面信息展示和添加
    Django中的Model模型
    浅谈web开发以及django的安装和入门
    对前面知识的重新理解
    8月26号
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/10341863.html
Copyright © 2011-2022 走看看