在Fragment中使用自定义的PopupWindow(带动画效果)

新手一枚,最近在写一个小的项目,有个地方用到了PopupWindow,经过网上查阅资料和Api文档的查看终于达到了我想要的结果了;
下面是我Fragment中的代码(我将主要的代码贴出来,对于某些控件的声明这里可能没有)

public class SkyDriveFragment extends BaseFragment {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_sky_drive, container, false);
        list = new ArrayList<String>();
        initView();
        initPopupWindow();
        return view;
    }
    private void initPopupWindow() {
        View v = getActivity().getLayoutInflater().inflate(
                R.layout.rank_animator_view, null);
        popup = new PopupWindow(v, LayoutParams.MATCH_PARENT, 190, true);


        popup.setFocusable(true);
        //该属性设置为true则你在点击屏幕的空白位置也会退出
        popup.setTouchable(true);

        popup.setOutsideTouchable(true);
        popup.setAnimationStyle(R.style.PopupAnimation);
    }
    private void initView() {
        fenLeiBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                /**相对于某个控件的下方,并且在View这个布局中能找到对应的控件,如果时include的就不能找见*/
                popup.showAsDropDown(view.findViewById(R.id.header_include_id), 0,
                        0);
            }
        });
    }

}

下面是xml文件自定义popopwindow的布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rank_animator_id"
    android:layout_width="match_parent"
    android:layout_height="190dp"
    android:background="#FF323232"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:background="#00000000"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/rank_img_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_img_selector"
            android:text="图片"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_file_selector"
            android:text="文档"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_video_selector"
            android:text="视频"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_seed_selector"
            android:text="BT种子"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="80dp"
        android:layout_marginTop="10dp"
        android:background="#00000000"
        android:orientation="horizontal" >

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_music_selector"
            android:text="音乐"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_app_selector"
            android:text="应用"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="#00000000"
            android:drawableTop="@drawable/rank_other_selector"
            android:text="其他"
            android:textSize="15sp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="#00000000" />
    </LinearLayout>

</LinearLayout>

Fragment的布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/sky_main_id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SkyDriveFragment" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
         >

        <include
            android:id="@+id/header_include_id"
            android:layout_width="match_parent"
            android:layout_height="150dp"
            layout="@layout/skydrive_share_header" />

        <ListView
            android:id="@+id/skydrive_lv_id"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/header_include_id"
            android:fastScrollEnabled="false"
            android:overScrollMode="never"
            android:scrollbars="none" />
    </RelativeLayout>

</RelativeLayout>

下面时动画的布局文件,在res文件下创建anim文件夹。这里面有两个动画的布局文件

//这是popup_animation_02.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="0"
    android:toYDelta="-150"
    android:duration="2000"
    >

</translate>
//这是popup_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromYDelta="-150"
    android:toYDelta="0"
    android:duration="2000"
    >
</translate>

下面时style中的一段代码

 <style name="PopupAnimation">
        <item name="android:windowExitAnimation">@anim/popup_animation_02</item>
        <item name="android:windowEnterAnimation">@anim/popup_animation</item>
    </style>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值