动画实现PoPupWindow

来源:互联网 发布:全国矢量数据免费下载 编辑:程序博客网 时间:2024/06/06 01:40

1、在res/anim文件下

hide.xml
 <scale
     android:fromXScale="1.0"
     android:toXScale="0.0"
     android:fromYScale="1.0"
     android:toYScale="0.0"
     android:pivotX="50%"
     android:pivotY="50%"
     android:duration="700" />

show.xml
<scale
     android:fromXScale="0.0"
     android:toXScale="1.0"
     android:fromYScale="0.0"
     android:toYScale="1.0"
     android:pivotX="50%"
     android:pivotY="50%"
     android:duration="700" />

2、在res/values/styles.xml文件下

 <style name="popup_style">


    <item name="android:windowEnterAnimation">@anim/show</item>
    <item name="android:windowExitAnimation">@anim/hide</item>


</style>

3、MainActivity.Java

public class MainActivity extends AppCompatActivity {
    private TextView tv;
    private View content;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        //解析父控件的布局
        content = View.inflate(MainActivity.this, R.layout.activity_main,null);
        //解析布局
        View view=View.inflate(MainActivity.this,R.layout.item,null);
        //创建PopupWindow对象
        /*
        第一个参数:解析的popupwindow布局
        第二个参数:宽
        第三个参数:高
         */
        final PopupWindow popupWindow=new PopupWindow(view,LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        content.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                popupWindow.dismiss();
            }
        });
        //点击空白区域消失
        //是否可以触摸
        popupWindow.setOutsideTouchable(true);
        //添加一个空白的背景
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        //想编辑popupwindow上的信息,获取焦点
        popupWindow.setFocusable(true);


        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //先实现动画,
                popupWindow.setAnimationStyle(R.style.popup_style);
                //点击当前控件的左下方显示
                popupWindow.showAsDropDown(tv);
                //有偏移量
                // popupWindow.showAsDropDown(tv,30,40);
                //对于父控件的位置
                //  popupWindow.showAtLocation(content, Gravity.BOTTOM,0,0);
            }
        });
    }
}


原创粉丝点击