Kotlin 中的图像切换器
Android ImageSwitcher是一个用户界面小部件,它为图像提供平滑的过渡动画效果,同时在它们之间切换以显示在视图中。
ImageSwitcher 是 View Switcher 的子类,用于为一张图像设置动画并显示下一张。
通常,我们在 XML 布局中手动使用 ImageSwitcher 和在 Kotlin 文件中以编程方式使用 ImageSwitcher。
我们应该定义一个 XML 组件,以便在我们的 android 应用程序中使用ImageSwitcher 。
XML
XML
XML
ImageSwitcherInKotlin
Next
Prev
Kotlin
package com.geeksforgeeks.myfirstkotlinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.animation.AnimationUtils
import android.widget.Button
import android.widget.ImageSwitcher
import android.widget.ImageView
class MainActivity : AppCompatActivity() {
private val flowers = intArrayOf(R.drawable.flower1,
R.drawable.flower2, R.drawable.flower4)
private var index = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// access the ImageSwitcher
val imgSwitcher = findViewById(R.id.imgSw)
imgSwitcher?.setFactory({
val imgView = ImageView(applicationContext)
imgView.scaleType = ImageView.ScaleType.FIT_CENTER
imgView.setPadding(8, 8, 8, 8)
imgView
})
// set the method and pass array as a parameter
imgSwitcher?.setImageResource(flowers[index])
val imgIn = AnimationUtils.loadAnimation(
this, android.R.anim.slide_in_left)
imgSwitcher?.inAnimation = imgIn
val imgOut = AnimationUtils.loadAnimation(
this, android.R.anim.slide_out_right)
imgSwitcher?.outAnimation = imgOut
// previous button functionality
val prev = findViewById
XML
首先,我们按照以下步骤创建一个新项目:
- 单击File ,然后单击New => New Project 。
- 之后包括 Kotlin 支持,然后单击下一步。
- 根据方便选择最小的 SDK,然后单击下一步按钮。
- 然后选择Empty activity => next => finish 。
ImageSwitcher 小部件的不同属性
XML attributes | Description |
---|---|
android:id | Used to specify the id of the view. |
android:onClick | Used to specify the action when this view is clicked. |
android:background | Used to set the background of the view. |
android:padding | Used to set the padding of the view. |
android:visibility | Used to set the visibility of the view. |
android:inAnimation | Used to define the animation to use when view is shown. |
android:outAnimation | Used to define the animation to use when view is hidden. |
android:animateFirstView | Used to define whether to animate the current view when the view animation is first displayed. |
修改activity_main.xml文件
在这个文件中,我们使用带有 ImageSwitcher 和 Buttons 的约束布局。
XML
更新字符串.xml 文件
在这里,我们使用字符串标签更新应用程序的名称。
XML
ImageSwitcherInKotlin
Next
Prev
ImageSwitcher 小部件的不同方法
Methods | Description |
---|---|
setImageDrawable | It is used to set a new drawable on the next ImageView in the switcher. |
setImageResource | It is used to set a new image on the ImageSwitcher with the given resource id. |
setImageURI | It is used to set a new image on the ImageSwitcher with the given URI. |
在 MainActivity.kt 文件中访问 ImageSwitcher
首先,我们声明一个数组flowers ,其中包含用于ImageView 的图像资源。
private val flowers = intArrayOf(R.drawable.flower1,
R.drawable.flower2, R.drawable.flower4)
然后,我们从 XML 布局中访问ImageSwitcher并设置 ImageView 来显示图像。
val imgSwitcher = findViewById(R.id.imgSw)
imgSwitcher?.setFactory({
val imgView = ImageView(applicationContext)
imgView.scaleType = ImageView.ScaleType.FIT_CENTER
imgView.setPadding(8, 8, 8, 8)
imgView
})
此外,我们将对 ImageSwitcher 使用上述方法之一。
imgSwitcher?.setImageResource(flowers[index])
科特林
package com.geeksforgeeks.myfirstkotlinapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.animation.AnimationUtils
import android.widget.Button
import android.widget.ImageSwitcher
import android.widget.ImageView
class MainActivity : AppCompatActivity() {
private val flowers = intArrayOf(R.drawable.flower1,
R.drawable.flower2, R.drawable.flower4)
private var index = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// access the ImageSwitcher
val imgSwitcher = findViewById(R.id.imgSw)
imgSwitcher?.setFactory({
val imgView = ImageView(applicationContext)
imgView.scaleType = ImageView.ScaleType.FIT_CENTER
imgView.setPadding(8, 8, 8, 8)
imgView
})
// set the method and pass array as a parameter
imgSwitcher?.setImageResource(flowers[index])
val imgIn = AnimationUtils.loadAnimation(
this, android.R.anim.slide_in_left)
imgSwitcher?.inAnimation = imgIn
val imgOut = AnimationUtils.loadAnimation(
this, android.R.anim.slide_out_right)
imgSwitcher?.outAnimation = imgOut
// previous button functionality
val prev = findViewById(R.id.prev)
prev.setOnClickListener {
index = if (index - 1 >= 0) index - 1 else 2
imgSwitcher?.setImageResource(flowers[index])
}
// next button functionality
val next = findViewById(R.id.next)
next.setOnClickListener {
index = if (index + 1 < flowers.size) index +1 else 0
imgSwitcher?.setImageResource(flowers[index])
}
}
}
AndroidManifest.xml 文件
XML
作为模拟器运行:
单击下一步按钮,然后我们在视图中获得另一个动画图像。