新手一枚,最近在写一个小的项目,有个地方用到了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>