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>
    

      

  • 相关阅读:
    [转] 常用的sql server规范
    <深入理解JavaScript>学习笔记(2)_揭秘命名函数表达式
    SQL Server 字段类型 decimal(18,6)小数点前是几位?记一次数据库SP的BUG处理
    <深入理解JavaScript>学习笔记(1)_编写高质量JavaScript代码的基本要点
    [转] SQL函数说明大全
    jquery 获取 tagName(JQuery如何得到tagName?)
    [转] .NET出现频率非常高的笔试题
    [转] SQL Server游标的使用
    jquery datatables 学习笔记
    [转] 如何让代码可测试化(C#)
  • 原文地址:https://www.cnblogs.com/yongfengnice/p/10341863.html
Copyright © 2011-2022 走看看