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