在开发的过程中,动画可以实现很好的效果,比如对于图片的旋转,电子罗盘的都可以利用动画来时实现。但是对于动画不太熟悉,经常想用却不会用,特地写这篇博客,记录一下对于动画的学习。 主要学习帧动画和ObjectAnimator属性动画。
帧动画-淡化
res目录下新建anim文件夹,新建alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"><alpha android:fromAlpha="1.0"android:toAlpha="0.0"/>
</set>
mainActivity中,
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main5)val button = findViewById<Button>(com.example.rotateluopan.R.id.button)var imageView = findViewById<ImageView>(R.id.imageView)button.setOnClickListener {val alpha = AnimationUtils.loadAnimation(this, R.anim.alpha)imageView!!.startAnimation(alpha)}
}
帧动画-缩放
创建scale.xml,修改mainactivity中代码。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"><scaleandroid:fromXScale="0.5"android:fromYScale="0.5"android:toXScale="2"android:toYScale="2"android:pivotX="50%"android:pivotY="50%"/>
</set>
帧动画-平移
创建translate.xml,修改mainactivity中代码。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"><translateandroid:fromXDelta="0"android:fromYDelta="0"android:toXDelta="100"android:toYDelta="100"android:interpolator="@android:anim/accelerate_interpolator"/>
</set>
帧动画-旋转
创建rotate.xml,修改mainactivity中代码。
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:duration="2000"><rotateandroid:fromDegrees="0"android:pivotX="10%p"android:pivotY="10%p"android:repeatCount="2"android:repeatMode="reverse"android:toDegrees="1800" />
</set>
ObjectAnimator-旋转
修改MainActivity的代码
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main5)val button = findViewById<Button>(R.id.button)val imageView = findViewById<ImageView>(R.id.imageView)button.setOnClickListener {val objectAnimator= ObjectAnimator.ofFloat(imageView,"rotation", 0f, 360f)objectAnimator.duration = 3000objectAnimator.start()}
}
ObjectAnimator-淡化
修改MainActivity的代码
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main5)val button = findViewById<Button>(R.id.button)val imageView = findViewById<ImageView>(R.id.imageView)button.setOnClickListener {val objectAnimator =ObjectAnimator.ofFloat(imageView, "alpha", 0f, 1f, 0f, 1f)objectAnimator.duration = 3000objectAnimator.start()}
}
ObjectAnimator-X轴平移
修改MainActivity的代码
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main5)val button = findViewById<Button>(R.id.button)val imageView = findViewById<ImageView>(R.id.imageView)button.setOnClickListener { val objectAnimator =ObjectAnimator.ofFloat(imageView, "translationX",0f,100f)objectAnimator.duration = 3000objectAnimator.start() }
}
ObjectAnimator-X轴缩放
修改MainActivity的代码
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main5)val button = findViewById<Button>(R.id.button)val imageView = findViewById<ImageView>(R.id.imageView)button.setOnClickListener {val objectAnimator =ObjectAnimator.ofFloat(imageView, "scaleX",0f,1f)objectAnimator.duration = 3000objectAnimator.start()}
}