Explicit animations for setAnimationStyle (), what are my options?

I would like to try different animation styles for the popup using setAnimationStyle (), but I am trying to understand the documentation.

developer.android.com, says: "An animation style to use when a popup appears and disappears. Set to -1 for the default animation, 0 for no animation, or a resource identifier for explicit animation."

This does not give any examples or tells me which resource options are available. I suspect that the best animation for my purposes will be sliding on the right ... does this exist as an option? Can I select these things from the list or do I need to somehow create my own?

EDIT: My current code for creating my popup is something like this (simplified):

public void completed_dialog() { runOnUiThread(new Runnable() { public void run() { View layout = inflater.inflate(R.layout.endofgame, null, false); Button b1 = (Button) layout.findViewById(R.id.pu_menu); Button b2 = (Button) layout.findViewById(R.id.pu_repeat); Button b3 = (Button) layout.findViewById(R.id.pu_next); b1.setBackgroundResource(R.drawable.custom_menu_but); b2.setBackgroundResource(R.drawable.custom_repeat_but); b3.setBackgroundResource(R.drawable.custom_next_but); b1.setOnClickListener(menu_button_click_listener); b2.setOnClickListener(repeat_button_click_listener); b3.setOnClickListener(next_button_click_listener); final PopupWindow pw = new PopupWindow(layout, canvas_width, canvas_width /2, true); pw.setAnimationStyle(android.R.style.Animation_Dialog); pw.showAtLocation(game_frame_layout, Gravity.CENTER, 0, 0); } } } 

Now I have added the following to the res / anim / test.xml file:

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <scale android:fromXScale="0.3" android:toXScale="1.0" android:fromYScale="0.3" android:toYScale="1.0" android:pivotX="0%" android:pivotY="0%" android:duration="@android:integer/config_shortAnimTime" /> <alpha android:interpolator="@android:anim/decelerate_interpolator" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" /> </set> 

Source code with pw.setAnimationStyle (android.R.style.Animation_Dialog); worked fine, as the dialog appeared with standard animation, but if I changed this line to pw.setAnimationStyle (R.anim.test); no animation. I have no idea why.

+4
source share
2 answers

this is a working example of setAnimationStyle() on my end:

Res / anim / in.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <translate android:fromYDelta="854" android:toYDelta="0" android:duration="1000"/> </set> 

Res / anim / out.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:interpolator="@android:anim/decelerate_interpolator" android:fromYDelta="0" android:toYDelta="854" android:duration="10000" /> </set> 

layout /main.xml :

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/layout" > <Button android:id="@+id/btn_show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="show" /> </RelativeLayout > 

layout /popup.xml :

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#cccccc" > <Button android:id="@+id/btn_dismiss" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="dismiss"/> </LinearLayout> 

values ​​/styles.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="PopupAnimation" parent="android:Animation" mce_bogus="1"> <item name="android:windowEnterAnimation">@anim/in</item> <item name="android:windowExitAnimation">@anim/out</item> </style> </resources> 

values ​​/strings.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">Popupwindow</string> </resources> 

MainActivity.java :

 public class MainActivity extends Activity { /** Called when the activity is first created. */ boolean flag =false; PopupWindow popupWindow; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } public void init() { Button btn_show = (Button) findViewById(R.id.btn_show); LayoutInflater inflater = LayoutInflater.from(this); View layout = inflater.inflate(R.layout.popup, null); popupWindow =new PopupWindow(layout, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); Button btn_dismiss = (Button) layout.findViewById(R.id.btn_dismiss); btn_dismiss.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub openMenu(); } }); btn_show.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub openMenu(); } }); } public void btn_showOnClicked() { openMenu(); } public void btn_dismissOnClicked() { openMenu(); } public void openMenu() { if (!flag) { popupWindow.setAnimationStyle(R.style.PopupAnimation); popupWindow.showAtLocation(findViewById(R.id.btn_show), Gravity.NO_GRAVITY, 0, 0); popupWindow.setFocusable(true); popupWindow.update(); flag =true; } else { popupWindow.dismiss(); popupWindow.setFocusable(false); flag =false; } } } 

and in your code just add your animation file to the style:

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="test" parent="android:Animation" mce_bogus="1"> <item name="android:windowEnterAnimation">@anim/test</item> </style> </resources> 

and in code:

 pw.setAnimationStyle(android.R.style.test); 

Thanks and happy coding !!!

+14
source

You can see the parameters in the R.style documentation. But there are not many of them. If you want more, you will need to create it yourself. See the Basic Guide here .

A few more examples of custom animations can be found on google's fast hosting site .

According to your comment, I think you should specify the identifier of your style as R.style.Animation_test .

0
source

Source: https://habr.com/ru/post/1400750/


All Articles