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

来源:互联网 发布:网络安全法第27条 编辑:程序博客网 时间:2024/06/03 11:20

新手一枚,最近在写一个小的项目,有个地方用到了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>
1 0
原创粉丝点击