丈夫志四海,万里犹比邻。这篇文章主要讲述如何用android动画移动/改变对象的方向?相关的知识,希望能为你提供帮助。
我试图在android中制作一个简单的“乒乓”应用程序,但我无法找到重复基本动画的模式,如
TranslateAnimation(fromX,toX,fromY,toY);
我想让一个球在屏幕的边界上弹跳,我该如何动态改变方向?
答案首先,对于乒乓球比赛,我强烈建议您使用自定义视图进行渲染。话虽这么说,你可以做的是以编程方式创建你的
Animation
实例,以便你可以计算x和y值。假设你有一个类似的布局<
?xml version="1.0" encoding="utf-8"?>
<
FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<
View
android:id="@+id/view"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="#ffff0000" />
<
/FrameLayout>
所以你要上下调整View的动画
class MainActivity : AppCompatActivity(), Animation.AnimationListener {private lateinit var view: View
private var viewX = 0f
private var viewY = 0f
private var dstX = 0f
private var dstY = 0foverride fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
view = findViewById(R.id.view)
startViewAnimation()
}private fun startViewAnimation(){
dstX = Random().nextFloat()
dstY = if (viewY == 1f) 0f else 1fval animation = TranslateAnimation(
Animation.RELATIVE_TO_PARENT, viewX,
Animation.RELATIVE_TO_PARENT, dstX,
Animation.RELATIVE_TO_PARENT, viewY,
Animation.RELATIVE_TO_PARENT, dstY
)
animation.duration = 1000L
animation.setAnimationListener(this)
animation.fillAfter = true
view.startAnimation(animation)
}override fun onAnimationEnd(animation: Animation?) {
viewX = dstX
viewY = dstY
startViewAnimation()
}override fun onAnimationStart(animation: Animation?) = Unit
override fun onAnimationRepeat(animation: Animation?) = Unit}
y
坐标在0和1之间交替,因为球(正方形)上下上下。 x
只是一个随机值。x
和y
值是父母大小的百分比。【如何用android动画移动/改变对象的方向()】当动画结束时,您只需使用新的目标坐标开始一个新动画。
推荐阅读
- Android(Interpolator无法处理自定义对话框)
- 如何在Android java插件端等待异步操作(任何I / O)()
- Android模拟器上的Flash Player
- 运行Create-React-App测试不在Watch模式下
- 使用手动视图包含时,为什么在错误的时间调用viewWillDisappear()
- 需要在app的Documents文件夹中为图像加载延迟表图像
- iPad上只有app app的应用程序图标
- Test-Flight App beta测试时间限制
- Ionic 3(css的一部分在Android平台上不起作用)