您好,登錄后才能下訂單哦!
這篇文章主要介紹“Android怎么實現左右滑動切換圖片”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Android怎么實現左右滑動切換圖片”文章能幫助大家解決問題。
本文采用ImageSwitcher實現左右滑動切換圖片。首先調用setFactory方法,設置視圖工廠;然后設置手指觸碰監聽,判斷左滑右滑進而切換圖片。
xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageSwitcher android:id="@+id/imageSwitcher" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
activity
package com.imageSwitcher import android.os.Bundle import android.view.MotionEvent import android.view.View import android.view.animation.AnimationUtils import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.Glide import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { // 本地圖片 private val images = arrayOf(R.drawable.t1, R.drawable.t2, R.drawable.t3, R.drawable.t4, R.drawable.t5, R.drawable.t6) // 網絡圖片 private val urlImages = arrayOf("http://ip/aa.jpg", "http://ip/bb.jpg", "http://ip/cc.jpg", "http://ip/dd.jpg", "http://ip/ee.jpg", "http://ip/ff.jpg") private var index = 0 private var touchDownX: Float = 0f private var touchUpX: Float = 0f override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initView() } private fun initView() { // 設置視圖工廠 imageSwitcher.setFactory { val imageView = ImageView(this@MainActivity) imageView.setImageResource(images[index]) imageView } // 設置觸摸監聽 imageSwitcher.setOnTouchListener(object : View.OnTouchListener { override fun onTouch(view: View?, event: MotionEvent?): Boolean { //判斷動作是不是按下 if (event?.action == MotionEvent.ACTION_DOWN) { // 獲取手指按下時的X坐標 touchDownX = event.x return true } else if (event?.action == MotionEvent.ACTION_UP) { // 獲取手指離開后的X坐標 touchUpX = event.x // 判斷是左滑還是右滑 if (touchUpX - touchDownX > 100) { // 上一張 if (index == 0) { index = images.size - 1 } else { index-- } } else if (touchDownX - touchUpX > 100) { // 下一張 if (index >= images.size - 1) { index = 0 } else { index++ } } // 使用自帶的淡入淡出 imageSwitcher.inAnimation = AnimationUtils.loadAnimation(this@MainActivity, android.R.anim.fade_in); imageSwitcher.outAnimation = AnimationUtils.loadAnimation(this@MainActivity, android.R.anim.fade_out); // 顯示另一張圖片 imageSwitcher.setImageResource(images[index]) return true } return false } }) } }
setFactory方法對應替換:
imageSwitcher.setFactory { val imageView = ImageView(this@MainActivity) Glide.with(this).load(urlImages[index]).into(imageView) imageView }
setOnTouchListener對應替換:
Glide.with(this@SwipeRecommend).asBitmap().load(urlImages[index]).into(imageSwitcher.currentView as ImageView)
注意加載http網絡圖片需要設置網絡權限:
AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.INTERNET" />
AndroidManifest.xml的application標簽添加:
android:networkSecurityConfig="@xml/network_security_config"
network_security_config.xml(res/xml/文件夾下,沒有自行創建即可)內容為:
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
效果展示
關于“Android怎么實現左右滑動切換圖片”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。