提问者:小点点

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


我尝试在android中使用动画floatingActionButton来获取菜单,但在带有API的设备中

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);

}

在此之后,只需调用方法翻译()

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*button.getHeight()或相同的翻译=1.5)。


共1个答案

匿名用户

可能是因为这些参数是像素。尝试使用以下函数将它们转换为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;
}