热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Android基于ImageSwitcher实现图片切换功能

这篇文章主要介绍了Android基于ImageSwitcher实现图片切换功能的相关资料,需要的朋友可以参考下

左右切换图片控件大家都用ViewPager, ViewFipper比较多吧,我之前也用ViewPager实现了,使用ViewPager实现左右循环滑动图片,有兴趣的可以去看下,今天介绍的是基于ImageSwitcher实现的左右切换图片,先上截图吧

好了,接下来来看代码吧,第一张图是一个GridView,点击item跳转到第二个界面,第一个界面可以忽略,主要是讲解ImageSwitcher的左右却换图片,先看布局文件

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 

然后就是Activity代码啦,总体来说比较简单,代码我添加了注释

package com.example.photoalbum; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.view.ViewGroup; 
import android.view.animation.AnimationUtils; 
import android.widget.ImageSwitcher; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout.LayoutParams; 
import android.widget.Toast; 
import android.widget.ViewSwitcher.ViewFactory; 
 
public class ShowPhotoActivity extends Activity implements ViewFactory, OnTouchListener{ 
  /** 
   * ImagaSwitcher 的引用 
   */ 
  private ImageSwitcher mImageSwitcher; 
  /** 
   * 图片id数组 
   */ 
  private int[] imgIds; 
  /** 
   * 当前选中的图片id序号 
   */ 
  private int currentPosition; 
  /** 
   * 按下点的X坐标 
   */ 
  private float downX; 
  /** 
   * 装载点点的容器 
   */ 
  private LinearLayout linearLayout; 
  /** 
   * 点点数组 
   */ 
  private ImageView[] tips; 
  
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.show_photo); 
     
    imgIds = new int[]{R.drawable.item01,R.drawable.item02,R.drawable.item03,R.drawable.item04, 
        R.drawable.item05, R.drawable.item06, R.drawable.item07, R.drawable.item08,R.drawable.item09, 
        R.drawable.item10, R.drawable.item11, R.drawable.item12}; 
    //实例化ImageSwitcher 
    mImageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher1); 
    //设置Factory 
    mImageSwitcher.setFactory(this); 
    //设置OnTouchListener,我们通过Touch事件来切换图片 
    mImageSwitcher.setOnTouchListener(this); 
     
    linearLayout = (LinearLayout) findViewById(R.id.viewGroup); 
     
    tips = new ImageView[imgIds.length]; 
    for(int i=0; i downX){ 
        if(currentPosition > 0){ 
          //设置动画,这里的动画比较简单,不明白的去网上看看相关内容 
          mImageSwitcher.setInAnimation(AnimationUtils.loadAnimation(getApplication(), R.anim.left_in)); 
          mImageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(getApplication(), R.anim.right_out)); 
          currentPosition --; 
          mImageSwitcher.setImageResource(imgIds[currentPosition % imgIds.length]); 
          setImageBackground(currentPosition); 
        }else{ 
          Toast.makeText(getApplication(), "已经是第一张", Toast.LENGTH_SHORT).show(); 
        } 
      }  
       
      if(lastX 

上面切换图片主要用到的就是动画了,用的是translate移动动画,这里我就不介绍了,接下来我吧动画代码贴出来,在res新建一个anim的目录,如下图

左边进入的动画,left_in.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
   
 

左边出去的动画,left_out.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
   
 

右边进入的动画,right_in.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
   
 

右边出去的动画,right_out.xml

<&#63;xml version="1.0" encoding="UTF-8"&#63;> 
 
   
 

好了,介绍完了,代码写的不是很好,写的不好的地方希望大家谅解,小编一定更加努力。


推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文讲述了如何通过代码在Android中更改Recycler视图项的背景颜色。通过在onBindViewHolder方法中设置条件判断,可以实现根据条件改变背景颜色的效果。同时,还介绍了如何修改底部边框颜色以及提供了RecyclerView Fragment layout.xml和项目布局文件的示例代码。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
author-avatar
詹詹洋zy_431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有