据我所知,在这种情况下不使用 Android 动画。为了告诉用户当他按下按钮时某些值发生了变化,我通常会弹出一个Toast,它既简单又有效。如果你不喜欢它的设计,你可以根据你的需要定制它。这一切都在我发送的链接(Toast)上进行了解释。
只需在您的按钮中使用它OnClickListener()
:
int srcposn = sourceSpinner.getSelectedItemPosition();
int tgtposn = targetSpinner.getSelectedItemPosition();
sourceSpinner.setSelection(tgtposn);
targetSpinner.setSelection(srcposn);
Toast toast = Toast.makeText(
HomeActivity.this,
"Units Successfully Changed",
Toast.LENGTH_SHORT);
toast.show();
编辑:
但是,如果您更喜欢将微调器高亮几秒钟之类的效果...我在网络上找不到针对此问题的任何好的帮助,因此我遵循了使用ImageViews
. 动画ImageViews
它使用一个ImageSwitcher
并创建 2 个ImageViews
等于,所以基本上这是同一件事。这个想法是创建两个新Spinners
的,将它们与其他的顶部和左侧对齐,具有如下功能:
/**
* Creates a new {@link Spinner} which overlays another
* @param spinner {@link Spinner} to overlay
* @return The new {@link Spinner}
*/
private Spinner createNewSpinner(Spinner spinner){
LayoutParams spinnerParams = new LayoutParams(spinner.getWidth(), LayoutParams.WRAP_CONTENT);
spinnerParams.addRule(RelativeLayout.ALIGN_TOP, spinner.getId());
spinnerParams.addRule(RelativeLayout.ALIGN_LEFT, spinner.getId());
Spinner overlaySpinner = new Spinner(HomeActivity.this);
overlaySpinner.setLayoutParams(spinnerParams);
return overlaySpinner;
}
对于效果,我认为你可以创建这样的东西,但我不确定它是否 100% 有效,所以为了获得更多支持,请阅读动画:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:background="@drawable/bg_orange"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="400"
/>
要加载动画,您可以使用此代码,但因为您想同时触发 2 中的效果,Spinners
我不确定您是否可以按照这个想法做所有事情。这就是为什么我之前没有告诉你这件事。
Animation animation = AnimationUtils.loadAnimation(this, R.anim.disapear);
sourceSpinner.startAnimation(animation);
希望能帮助到你!