我尝试使用floatingActionButton动画来获取Android中的菜单,但是在API< 21的设备中获得一些翻译和API> = 21,翻译较小。 我得到了这段代码:
private void translate(View view, float factor, int time){
TranslateAnimation translate = new TranslateAnimation(0, 0, factor * view.getHeight(), 0);
translate.setDuration(time);
view.startAnimation(translate);
}
之后只需调用方法translate()
FloatingActionButton fab_mini = (FloatingActionButton) getActivity().findViewById(R.id.fab_3);
translate(fab_mini, 1.5f, 400);
fab_mini.setTranslationY(-fab_mini.getHeight() * 1.5f );
fab_mini.setVisibility(View.VISIBLE);
fab_mini.setClickable(true);
问题是按钮在某些设备(我在Android 5.0.1中尝试过)和其他设备(Android 4.3和4.2.2)中显示一个按钮,按钮显示的是他们之间的正确空间(0.5 *按钮。 getHeight()或什么是相同的翻译= 1.5)。
答案 0 :(得分:0)
可能是因为这些参数是像素。尝试使用此函数将它们转换为dp:
public static float convertPixelsToDp(float px, Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / ((float)metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
return dp;
}