如何在屏幕右上方对图像进行动画处理

时间:2018-07-04 16:12:21

标签: java android android-layout android-studio

我是android开发的新手。 我想在更改图像大小(Smaller)的同时,将图像从中心移到屏幕的右上角。

我尝试了以下操作-

  1. 很难对translationX和translationY进行编码,输入-150dp这样的特定值,该值在我的仿真器屏幕上看起来不错,但是图像位置在各种设备上都不同。

  2. .getX。 getY方法,我试图将一个不可见的图像(alpha 0)放置在我要放置图像的位置,以及图像的getx和y,并设置了translationx,y,但是它不起作用,图像从屏幕上滑出。 p>

我认为,如果我可以获取诸如textview之类的对象的位置并将图像位置设置为 objectposition + somevalue ,将可以正常工作,但我不知道该怎么做。 / strong>有人可以帮助我吗?

这是我正在尝试做的图像。 预先感谢。

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试一下,希望这段代码对您有帮助

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Your Text"
        android:layout_gravity="center"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@android:drawable/star_big_off" />
</LinearLayout>

答案 1 :(得分:0)

尝试使用

  view.animate().x(dx).y(-dy)

在文档中,这些都是绝对坐标,但实际上它是一个增量,我需要更改。 X-按左侧计算,Y-顶部。
要获得协调,可以使用rect:

 private fun getLocationOnScreen(view: View): Rect {
    val rect = Rect()
    view.getGlobalVisibleRect(rect)
    return rect
}

此外,您需要更改尺寸图像。对于他们,使用比例动画,但在需要之前计算百分比。像这样:

val textRect = getLocationOnScreen(textView)
val imageRect = getLocationOnScreen(imageView)
val width = getWidth()//some method that get screen width on pxl
val height = getHeight()
val xScale = (width - textRect.right) / (imageRect.right - imageRect.left).toFlooat()
val yScale = (height - textRect.bottom) / (imageRect.bottom - imageRect.top).toFloat()
val scale = ScaleAnimation(
            1.0f, xScale ,
            1.0f, yScale ,
            Animation.RELATIVE_TO_SELF, pivotX, // optional
            Animation.RELATIVE_TO_SELF, pivotY //optional
)
scale.duration = 1000L
imageView.startAnimation(scale)

我希望有所帮助,或者说什么都不起作用=)