我是android开发的新手。 我想在更改图像大小(Smaller)的同时,将图像从中心移到屏幕的右上角。
我尝试了以下操作-
很难对translationX和translationY进行编码,输入-150dp这样的特定值,该值在我的仿真器屏幕上看起来不错,但是图像位置在各种设备上都不同。
.getX。 getY方法,我试图将一个不可见的图像(alpha 0)放置在我要放置图像的位置,以及图像的getx和y,并设置了translationx,y,但是它不起作用,图像从屏幕上滑出。 p>
我认为,如果我可以获取诸如textview之类的对象的位置并将图像位置设置为 objectposition + somevalue ,将可以正常工作,但我不知道该怎么做。 / strong>有人可以帮助我吗?
这是我正在尝试做的图像。 预先感谢。
答案 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)
我希望有所帮助,或者说什么都不起作用=)