📜  Kotlin 中的图像切换器

📅  最后修改于: 2022-05-13 01:55:49.235000             🧑  作者: Mango

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


  

    
        
            
  
            
        
    

  


首先,我们按照以下步骤创建一个新项目

  1. 单击File ,然后单击New => New Project
  2. 之后包括 Kotlin 支持,然后单击下一步。
  3. 根据方便选择最小的 SDK,然后单击下一步按钮。
  4. 然后选择Empty activity => next => finish

ImageSwitcher 小部件的不同属性

XML attributesDescription
android:idUsed to specify the id of the view.
android:onClickUsed to specify the action when this view is clicked.
android:backgroundUsed to set the background of the view.
android:paddingUsed to set the padding of the view.
android:visibilityUsed to set the visibility of the view.
android:inAnimationUsed to define the animation to use when view is shown.
android:outAnimationUsed to define the animation to use when view is hidden.
android:animateFirstViewUsed 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 小部件的不同方法

MethodsDescription
setImageDrawableIt is used to set a new drawable on the next ImageView in the switcher.
setImageResourceIt is used to set a new image on the ImageSwitcher with the given resource id.
setImageURIIt 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

AndroidManifest.xml 文件

XML



  

    
        
            
  
            
        
    

  

作为模拟器运行:

单击下一步按钮,然后我们在视图中获得另一个动画图像。