PopWindow animation implements bottom slide menu and popwindow animation menu
1. Structure directory
2. Implementation Step 1. activity_main.xml
<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android" xmlns: tools = "http://schemas.android.com/tools" android: id = "@ + id/main" android: layout_width = "match_parent" android: layout_height = "match_parent"> <Button android: id = "@ + id/open" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: layout_centerHorizontal = "true" android: text = "Open bubble window"/> </RelativeLayout>
2. popupwindow. xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridView android:id="@+id/gv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#00bfff" android:numColumns="4" > </GridView></LinearLayout>
3. MainActivity
Public class MainActivity extends Activity implements OnClickListener {private Button open; private View parent; private View popView; private PopupWindow popupWindow; private GridView gv; private String [] names = {" ", "such as", "Summer", "Flowers", "sea", "wide", "days", "EMPTY"}; private int [] images = {R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher, R. drawable. ic_launcher}; @ Overrideprotected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); parent = findViewById (R. id. main); open = (Button) findViewById (R. id. open); open. setOnClickListener (this); initPopupWindow ();}/*** initialize popupWindow */private void initPopupWindow () {popView = getLayoutInflater (). inflate (R. layout. popupwindow, null); popupWindow = new PopupWindow (popView, ViewGroup. layoutParams. MATCH_PARENT, ViewGroup. layoutParams. WRAP_CONTENT); popupWindow. setFocusable (true); popupWindow. setBackgroundDrawable (new BitmapDrawable (); popupWindow. setOutsideTouchable (true); gv = (GridView) popView. findViewById (R. id. gv); gv. setAdapter (MyAdapter ();}/*** fill data in the GridView ** @ return */private ListAdapter MyAdapter () {List <Map <String, object> list = new ArrayList <Map <String, Object> (); for (int I = 0; I <names. length; I ++) {Map <String, Object> map = new HashMap <String, Object> (); map. put ("names", names [I]); map. put ("images", images [I]); list. add (map);} SimpleAdapter simpleAdapter = new SimpleAdapter (this, list, R. layout. pop_item, new String [] {"names", "images"}, new int [] {R. id. TV, R. id. img}); return simpleAdapter;} @ Overridepublic void onClick (View v) {// Add an animation effect popupWindow for the popWindow. setAnimationStyle (R. style. popWindow_animation); // click popupWindow in the pop-up window. showAtLocation (parent, Gravity. BOTTOM, 0, 0 );}}
4. Two layout files popupwindow_enter.xml are defined to achieve the animation Entry and Exit effect.
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="500" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:duration="500" android:fromAlpha="0.5" android:toAlpha="1.0" /></set>
5. popupwindow_exit.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <alpha android:duration="500" android:fromAlpha="1.0" android:toAlpha="0.5" /> <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="500" /></set>
6. style. xml
<style name="popWindow_animation"> <item name="android:windowEnterAnimation">@anim/popupwindow_enter</item> <item name="android:windowExitAnimation">@anim/popupwindow_exit</item> </style>