关于设置动画效果不显示的问题

来源:4-4 设置动画(选修)

_TEEK_0

2021-03-11 17:50:09

请帮我看看我的动画是加上了的 但是运行是没有任何动画效果 还是一下子就弹出来了

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
   <translate
       android:fromXDelta="0"
       android:toXDelta="0"
       android:fromYDelta="300"
       android:toYDelta="0"
       android:duration="2000"
       ></translate>
</set>

styles.xml

<resources>
   <style name="mydialog" parent="android:style/Theme.Dialog">
       <!--设置标题  没有标题-->
       <item name="android:windowNoTitle">true</item>
       <!--设置背景 透明背景-->
       <item name="android:windowBackground">@android:color/transparent</item>
   </style>
   <style name="translate_anim">
       <item name="android:windowEnterAnimation">@anim/translate</item>
   </style>
</resources>

MainActivity调用动画

//设置PopupWindow
public void showPopupWindow(View view){
//将整个布局变成一个View 准备弹窗所需要的视图对象
   View v = LayoutInflater.from(this).inflate(R.layout.popup_layout, null);
   //1.实例化PopupWindow对象
   //参数1:用在弹窗中的view
   //参数23:弹窗的宽高
   //参数4(focusable) 能否获取焦点 (选择行加入,不加这个参数也没事)
   PopupWindow window = new PopupWindow(v,270,45,true);

   //2.设置 背景 动画 。。。。。。
   //设置背景
   window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//设置背景为透明色的背景
   //设置能响应外部的点击事件
   window.setOutsideTouchable(true);//能响应外部
   //设置弹窗能响应点击事件
   window.setTouchable(true);
   //动画
   /**
    * 1.创建动画资源
    * 2.创建一个style应用动画资源
    * 3.对当前弹窗的动画风格设置为 步骤2 的资源索引
    */
   window.setAnimationStyle(R.style.translate_anim);

   //3.显示
   //参数1:锚 ..加了这个参数会显示在参数控件正下方
   //参数23:想对于锚在xy方向上的偏移量
   //window.showAsDropDown(view);
   window.showAsDropDown(view,-270,0);

   //为弹窗中的文本添加点击事件
   v.findViewById(R.id.choose).setOnClickListener(new View.OnClickListener() {
@Override
       public void onClick(View v) {
Toast.makeText(MainActivity.this,"点击了选择",Toast.LENGTH_SHORT).show();
           window.dismiss();//这个方法啊 是让对话框隐藏掉
       }
});
   v.findViewById(R.id.choose_all).setOnClickListener(new View.OnClickListener() {
@Override
       public void onClick(View v) {
Toast.makeText(MainActivity.this,"点击了全选",Toast.LENGTH_SHORT).show();
           window.dismiss();
       }
});
   v.findViewById(R.id.copy).setOnClickListener(new View.OnClickListener() {
@Override
       public void onClick(View v) {
Toast.makeText(MainActivity.this,"点击了复制",Toast.LENGTH_SHORT).show();
           window.dismiss();
       }
});

}


写回答

1回答

好帮手慕雪

2021-03-12

同学,你好!老师测试你的代码是有动画效果的。至于你为什么显示不出来,可以从以下进行排查:1)把手机上原来的APP手动删除,修改java某行,那怕只增加一个空行也可以,保存后再运行。这是由于有些时候,只修改xml不变java文件,AS检测不到代码的改动,它没有重新生成APP。  2)styles.xml文件的位置没有没问题?需要放在values文件夹下,而不是values-xxx下。translate.xml也是一样的,放在anim下。祝:学习愉快!

0

0 学习 · 2907 问题

查看课程