如何在不同设备上为FloatingActionButton设置动画并获得相同的结果?

时间:2016-03-31 21:23:57

标签: android android-animation

我尝试使用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)。

1 个答案:

答案 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;
}