【问题标题】:Spinning wheel half way off screen android旋转轮半离屏android
【发布时间】:2012-12-17 01:31:19
【问题描述】:

我需要一个旋转轮图形,它位于屏幕底部的一半,然后在用户采取行动时动画(旋转)。

我可以通过调用将车轮图形从屏幕上移开:

    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 应用程序 https://catch.com/ - 如果我展开他们的滚轮菜单,它的大小在 Nexus S 和 Nexus 7 上是相同 - 他们是如何做到这一点的?

【问题讨论】:

    标签: android image screen-size


    【解决方案1】:

    Catch 的开发者在这里。感谢您在此处向我们指出您的问题的电子邮件。

    对于我们的滚轮菜单,其宽度和位置在 XML 布局文件中指定,使用 dp/dip(与密度无关的像素)。对于给定的尺寸,例如300dp,它将在任何 Android 设备上显示为相同的尺寸;系统将根据设备的屏幕是低、中、高、xhigh 等密度来缩放该值。

    所以,使用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>
    

    然后,如果我需要在代码中使用这些维度,我可以用一条线来获取它们:

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

    使用dp 进行布局是使Android UI 能够很好地适应不同设备的关键原则之一,并且对于您希望用户触摸/交互的任何事物尤其重要,因为您可以调整命中目标的大小在开发过程中,请放心,无论您的应用在什么设备上运行,它们的物理尺寸都会相似。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 1970-01-01
      相关资源
      最近更新 更多