Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 半屏幕旋转的机器人_Android_Image_Screen Size - Fatal编程技术网

Android 半屏幕旋转的机器人

Android 半屏幕旋转的机器人,android,image,screen-size,Android,Image,Screen Size,我有一个纺车图形的要求,是一半的屏幕底部,然后动画(旋转)当用户采取行动 我可以通过调用以下命令将控制盘图形移出屏幕: Animation animation = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE, 0,Animation.ABSOLUTE,wheelPos, Animation.ABSOLUTE, wheelPos); animation.setDuration(1); anim

我有一个纺车图形的要求,是一半的屏幕底部,然后动画(旋转)当用户采取行动

我可以通过调用以下命令将控制盘图形移出屏幕:

    Animation animation = new TranslateAnimation(Animation.ABSOLUTE,0,Animation.ABSOLUTE, 0,Animation.ABSOLUTE,wheelPos, Animation.ABSOLUTE, wheelPos);
    animation.setDuration(1);
    animation.setFillAfter(true);
    wheel.startAnimation(animation);
这很好,我可以通过LayoutParams将宽度设置为我想要的任何宽度

但是我怎样才能使轮子在不同的屏幕尺寸下具有相同的尺寸呢?例如,我需要将轮子Y像素放置在屏幕上方(wheelPos变量),但在Nexus S和Nexus 7上,我如何计算适当的Y值

宽度也是一样,如何计算宽度,使其看起来完全相同


我注意到Catch android应用程序-如果我扩展他们的控制盘菜单,它的大小在Nexus s和Nexus 7上是相同的-他们是如何做到这一点的?

Catch开发者在这里。谢谢你给我们发邮件,让我们知道你的问题

对于我们的控制盘菜单,其宽度和位置在XML布局文件中指定,使用
dp
/
dip
(与密度无关的像素)。对于给定的维度,比如说,
300dp
,它在任何Android设备上都会显示相同的大小;系统将根据设备的屏幕密度是低、中、高还是高等来缩放该值

因此,使用
dp
设置宽度和Y偏移量,就可以开始了。如果愿意,您可以完全通过编程方式完成:

final int wheelWidth = 300;
final int wheelYoffset = 64;

DisplayMetrics dm = getResources().getDisplayMetrics();

final float scaledWheelWidth = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wheelWidth, dm);
final float scaledWheelYoffset = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wheelYoffset, dm);
我个人发现,将所有UI维度作为资源进行维护要容易得多。在
res/values/dimens.xml
中,我要添加:

<dimen name="wheel_width">300dp</dimen>
<dimen name="wheel_y_offset">64dp</dimen>
使用
dp
进行布局是制作能够很好地扩展到不同设备的Android UI的关键原则之一,对于您希望用户触摸/交互的任何东西都特别重要,因为您可以在开发过程中调整命中目标的大小,并且请放心,无论您的应用程序运行在什么设备上,它们的物理大小都是相同的

final float scaledWheelWidth = getResources().getDimensionPixelSize(R.dimen.wheel_width);
final float scaledWheelYoffset = getResources().getDimensionPixelOffset(R.dimen.wheel_y_offset);