Android studio实现左右滑动切换图片

 更新时间:2022年05月17日 10:08:57   作者:wj778  
这篇文章主要为大家详细介绍了Android studio实现左右滑动切换图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android studio实现左右滑动切换图片的具体代码,供大家参考,具体内容如下

切换图片首先要使用到图片切换器ImageSwitcher

先了解一下ImageSwitcher

1.ImageSwitcher的重要属性:

android:inAnimation:切入图片时的效果。
android:outAnimation:切出图片时的效果。

以上两个属性在XML中设定,可以通过XML资源文件自定义动画效果,如果只是想使用Android自带的一些简单的效果,调用Android内置的资源即可,也可以在代码中设定,可以直接使用setInAnimation()和setOutAnimation()方法。它们都传递一个Animation的抽象对象,Animation用于描述一个动画效果,一般使用一个AnimationUtils的工具类获得。

常用的动画效果有:

  • fede_in:淡进
  • fade_out:淡出
  • slide_in_left:从左滑进
  • slide_out_right: 从右滑出

2.java文件中ImageSwitcher的重要重要方法:

setImageURL(URL) setImageResource(int) setImageDrawable(Drawable)

3.视图工厂 setFactory()

ImageSwitcher通过setFactory()方法为它设置一个ViewSwitcher.ViewFactory接口。设置这个ViewFactory接口时需要实现makeView()方法,该方法通常会返回一个ImageView。makeView()为ImageSwitcher生成ImageView。

接下来代码实现左右滑动切换图片

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageSwitcher
        android:id="@+id/imageswitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

java代码如下:

package com.example.tablelayout;

import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;

import androidx.appcompat.app.AppCompatActivity;

public class ImageSwitcha_Activity extends AppCompatActivity {
    private  int[]  arrayPicture=new int[]{
            R.drawable.pa,R.drawable.pb};
    private ImageSwitcher imageSwitcher;
    private int  index;
    private  float touchDownX;
    private  float touchUpX;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.imageswitch_main);
        //设置全屏显示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        imageSwitcher=findViewById(R.id.imageswitch);
        //设置视图工厂
        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView  imageView=new ImageView(ImageSwitcha_Activity.this);
                imageView.setImageResource(arrayPicture[index]);//设置显示图片(利用下标)
                return imageView;//返回图像视图
            }
        });
        //设置触摸监听器
        imageSwitcher.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //判断动作是不是按下  获得按下时的X坐标
                if(event.getAction()==MotionEvent.ACTION_DOWN) {
                    touchDownX=event.getX();
                    return true;
                } else if(event.getAction()==MotionEvent.ACTION_UP) {
                    touchUpX=event.getX();
                    //判断是左滑动还是右滑动
                    if(touchUpX-touchDownX>100){
                        //判断是不是第一张图片 是就将索引变成最后一张图片索引,
                        // 不是则当前索引减一
                        index=index==0?arrayPicture.length-1:index-1;
                        //使用自带的淡入淡出
                        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(ImageSwitcha_Activity.this,android.R.anim.fade_in));
                        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(ImageSwitcha_Activity.this,android.R.anim.fade_out));
                        imageSwitcher.setImageResource(arrayPicture[index]);
                    }else if(touchDownX-touchUpX>100){
                        index=index==arrayPicture.length-1?0:index+1;//注意这里下标是从0开始的,所以应该是长度减1
                        imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(ImageSwitcha_Activity.this,android.R.anim.fade_in));
                        imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(ImageSwitcha_Activity.this,android.R.anim.fade_out));
                        imageSwitcher.setImageResource(arrayPicture[index]);

                    }
                    return true;
                }
                return false;
            }
        });
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android编程中Tween动画和Frame动画实例分析

    Android编程中Tween动画和Frame动画实例分析

    这篇文章主要介绍了Android编程中Tween动画和Frame动画,结合实例形式较为详细的分析了Android中Tween动画和Frame动画的相关实现技巧,需要的朋友可以参考下
    2015-12-12
  • Android桌面插件App Widget用法分析

    Android桌面插件App Widget用法分析

    这篇文章主要介绍了Android桌面插件App Widget用法,结合实例形式分析了桌面插件App Widget的功能、布局、创建及使用方法,需要的朋友可以参考下
    2016-08-08
  • Flutter 弹性布局基石flex算法flexible示例详解

    Flutter 弹性布局基石flex算法flexible示例详解

    这篇文章主要为大家介绍了Flutter 弹性布局基石flex算法flexible示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Jetpack之CameraX的使用

    Jetpack之CameraX的使用

    CameraX 是Jetpack的一个成员,可以更轻松地开发相机应用,支持搭载Android 5.0及以上设备,具有广泛的设备兼容性,也可确保各设备间的一致性,如宽高比、屏幕方向、旋转角度、预览大小和图像大小等
    2022-11-11
  • Android中判断手机是否联网实例

    Android中判断手机是否联网实例

    这篇文章主要介绍了Android中判断手机是否联网实例,包括xml配置文件及功能代码的实现,需要的朋友可以参考下
    2014-10-10
  • Android截屏保存png图片的实例代码

    Android截屏保存png图片的实例代码

    这篇文章主要介绍了Android截屏保存png图片的小例子,可以在应用提供这个小功能,很实用的
    2013-11-11
  • Android中Listview下拉刷新和上拉加载更多的多种实现方案

    Android中Listview下拉刷新和上拉加载更多的多种实现方案

    本文大概通过三种方案给大家介绍了Android中Listview下拉刷新和上拉加载更多知识,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12
  • Android IntentFilter的匹配规则示例详解

    Android IntentFilter的匹配规则示例详解

    这篇文章主要为大家介绍了Android IntentFilter的匹配规则示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android Studio实现登录功能案例讲解

    Android Studio实现登录功能案例讲解

    这篇文章主要介绍了Android Studio实现登录功能案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Android Studio实现简易进制转换计算器

    Android Studio实现简易进制转换计算器

    这篇文章主要为大家详细介绍了Android Studio实现简易进制转换计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论