zoukankan      html  css  js  c++  java
  • Popwindow自定义动画(nexus5不支持暂未解决)

    遇到一个问题,先记录一下

    PopWindow自定义动画

    import android.app.Activity;
    import android.graphics.drawable.BitmapDrawable;
    import android.os.Build;
    import android.os.Bundle;
    import android.util.DisplayMetrics;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup.LayoutParams;
    import android.widget.Button;
    import android.widget.PopupWindow;
    
    public class ActivityMain extends Activity {
    
        private int screenWidth;
        private int screenHeigh;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            System.out.println("xirtam " + Build.VERSION.SDK);
            System.out.println("xirtam " + Build.VERSION.SDK_INT);
            {// 获取屏幕宽高
                DisplayMetrics dm = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(dm);
                screenWidth = dm.widthPixels;
                screenHeigh = dm.heightPixels;
            }
    
            LayoutInflater inflater = LayoutInflater.from(this);
            // 引入窗口配置文件
            View view = inflater.inflate(R.layout.main2, null);
            // 创建PopupWindow对象
            final PopupWindow pop = new PopupWindow(view,
                    LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, false);
            Button btn = (Button) findViewById(R.id.btn);
            // 需要设置一下此参数,点击外边可消失
            pop.setBackgroundDrawable(new BitmapDrawable());
            // 设置点击窗口外边窗口消失
            pop.setOutsideTouchable(true);
            // 设置此参数获得焦点,否则无法点击
            pop.setFocusable(true);
            btn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    if (pop.isShowing()) {
                        // 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏
                        pop.dismiss();
                    } else {
                        // 显示窗口
                        pop.setAnimationStyle(R.style.PopupAnimation);
                        pop.showAtLocation(v, Gravity.NO_GRAVITY, 0, screenHeigh);
    //                    pop.showAsDropDown(v);
                        pop.update();
                    }
    
                }
            });
        }
    
    }

    layout/main1.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点我是小狗" />
    
    </LinearLayout>

    layout/main2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <Button
            android:id="@+id/a"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="小狗你好" />
    
    </LinearLayout>

    values/styles.xml

    <style name="PopupAnimation" mce_bogus="1" parent="android:Animation">
            <item name="android:windowEnterAnimation">@anim/enter</item>
            <item name="android:windowExitAnimation">@anim/exit</item>
        </style>

    anim/enter.xml

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3500"
        android:fromYDelta="100%"
        android:toYDelta="1%" >
    
    </translate>

    anim/exit.xml

    <?xml version="1.0" encoding="utf-8"?>
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="3500"
        android:fromYDelta="1%"
        android:toYDelta="100%" >
    
    </translate>

    问题是在nexus5上 showAtLocation 没反应,其他机型未发现此问题。

  • 相关阅读:
    C# 控制台应用程序输出颜色字体[更正版]
    ORM for Net主流框架汇总与效率测试
    php 去掉字符串的最后一个字符
    bzoj1185 [HNOI2007]最小矩形覆盖 旋转卡壳求凸包
    bzoj [Noi2008] 1061 志愿者招募 单纯形
    bzoj1009 [HNOI2008] GT考试 矩阵乘法+dp+kmp
    扩展欧几里得(ex_gcd),中国剩余定理(CRT)讲解 有代码
    BZOJ 2103/3302/2447 消防站 树的重心【DFS】【TreeDP】
    hihocoder 1449 后缀自动机三·重复旋律6
    hihocoder 后缀自动机二·重复旋律5
  • 原文地址:https://www.cnblogs.com/xirtam/p/4019104.html
Copyright © 2011-2022 走看看