利用Android的ViewFlipper和AnimationUtils实现图片带有动画的轮播切换,其中当点击“上一张”图片时,切换到上一张图片;当点击“下一张”图片时,切换到下一张图片。其效果图如下:

设置布局文件,其内容如下:

activity_image_flipper_shade.xml

动画效果配置文件,其内容如下:

A.push_left_in.xml(从左边进入屏幕)

B.push_left_out.xml(从左边退出屏幕)

C.push_right_in.xml(从右边进入屏幕)

D.push_right_out.xml(从右边退出屏幕)

实现图片轮播切换的类为ImageFlipperShadeActivity.java,其内容为:

/**

*

*/

package com.i114gbox.aglieguy;

import android.annotation.SuppressLint;

import android.content.Context;

import android.graphics.PixelFormat;

import android.os.Bundle;

import android.os.Handler;

import android.view.Gravity;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.WindowManager;

import android.view.WindowManager.LayoutParams;

import android.view.animation.AnimationUtils;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.ViewFlipper;

import com.i114gbox.sdk.activity.I114gBoxActivity;

import com.i114gbox.sdk.utils.I114gBoxCollectActivityUtils;

import com.i114gbox.sdk.utils.I114gBoxLogUtils;

import com.i114gbox.sdk.utils.I114gBoxResourceUtils;

/**

* 图片滑动渐变Activity

*

* @author SJC

*

*/

public class ImageFlipperShadeActivity extends I114gBoxActivity {

private static String TAG = "ImageFlipperShadeActivity";

private Context ctx = null;

private ViewFlipper viewFlipper;// 视图轮播

private WindowManager windowManager;// 窗口管理器

private WindowManager.LayoutParams layoutParams;// 布局参数

private boolean isHide;

private int mAlpha = 0;

// 左边图片视图

private ImageView leftImageView;

// 右边图片视图

private ImageView rightImageView;

private int WHAT_HIDE = 0;

private int WHAT_SHOW = 1;

@Override

protected void onCreate(Bundle savedInstanceState) {

I114gBoxLogUtils.d(TAG, "The onCreate method execute.");

super.onCreate(savedInstanceState);

I114gBoxCollectActivityUtils.getInstance().addActivity(this);// 收集Activity

ctx = this;

setContentView(I114gBoxResourceUtils.getLayoutId(ctx,

"activity_image_flipper_shade"));

viewFlipper = (ViewFlipper) findViewById(I114gBoxResourceUtils.getId(

ctx, "vf_image_flipper_shade"));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_01")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_02")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_03")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_04")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_05")));

viewFlipper.addView(addImageView(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_06")));

Button backButton = (Button) findViewById(I114gBoxResourceUtils.getId(

ctx, "btn_image_flipper_shade_back"));

backButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

finish();

}

});

initImageButtonView();// 初始化ImageButton视图

}

/** 添加ImageView控件 **/

private View addImageView(int id) {

ImageView imageView = new ImageView(this);

imageView.setImageResource(id);

return imageView;

}

/** 初始化ImageButton视图 **/

private void initImageButtonView() {

windowManager = (WindowManager) ctx

.getSystemService(Context.WINDOW_SERVICE);

layoutParams = new WindowManager.LayoutParams();

// 设置窗口类型

layoutParams.type = LayoutParams.TYPE_PHONE;

// 设置图片格式,效果为背景透明

layoutParams.format = PixelFormat.RGBA_8888;

// 设置FLAG参数,触摸失效或无法获取焦点

layoutParams.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL

| LayoutParams.FLAG_NOT_FOCUSABLE;

// 初始化话坐标值

layoutParams.x = 0;

layoutParams.y = 0;

// 设置窗口的宽度和高度

layoutParams.width = 50;

layoutParams.height = 50;

// 创建左边和右边按钮

createLeftButtonView();

createRightButtonView();

}

/** 创建左边按钮 **/

private void createLeftButtonView() {

leftImageView = new ImageView(ctx);

leftImageView.setBackgroundResource(I114gBoxResourceUtils

.getDrawableId(ctx, "flipper_left"));

leftImageView.setAlpha(0);// 完全透明

// 添加点击监听事件

leftImageView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 设置进入屏幕的动画

viewFlipper.setInAnimation(AnimationUtils.loadAnimation(ctx,

I114gBoxResourceUtils.getAnimId(ctx, "push_left_in")));

// 设置退出屏幕的动画

viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(ctx,

I114gBoxResourceUtils.getAnimId(ctx, "push_left_out")));

// 显示下一个图层

viewFlipper.showNext();

}

});

// 设置布局为左边垂直居中

layoutParams.gravity = Gravity.LEFT | Gravity.CENTER_VERTICAL;

// 将左边按钮添加到窗口中

windowManager.addView(leftImageView, layoutParams);

}

/** 创建右边按钮 **/

private void createRightButtonView() {

rightImageView = new ImageView(ctx);

rightImageView.setBackgroundResource(I114gBoxResourceUtils.getDrawableId(

ctx, "flipper_right"));

rightImageView.setAlpha(0);// 完全透明

// 添加点击监听事件

rightImageView.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 设置进入屏幕的动画

viewFlipper.setInAnimation(AnimationUtils.loadAnimation(ctx,

I114gBoxResourceUtils.getAnimId(ctx, "push_right_in")));

// 设置退出屏幕的动画

viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(ctx,

I114gBoxResourceUtils.getAnimId(ctx, "push_right_out")));

// 显示上一个图层

viewFlipper.showPrevious();

}

});

// 设置布局为右边垂直居中

layoutParams.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL;

// 将右边按钮添加到窗口中

windowManager.addView(rightImageView, layoutParams);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

I114gBoxLogUtils.d(TAG, "The onTouchEvent method execute.");

switch (event.getAction()) {

// 移动事件

case MotionEvent.ACTION_MOVE:

break;

// 按下事件

case MotionEvent.ACTION_DOWN:

// 显示ImageButton视图

showImageButtonView();

break;

// 按下后松开事件

case MotionEvent.ACTION_UP:

// 隐藏ImageButton视图

hideImageButtonView();

break;

default:

break;

}

return true;

}

/** 显示ImageButton视图 **/

private void showImageButtonView() {

isHide = true;

mHandler.sendEmptyMessage(WHAT_SHOW);

}

/** 隐藏ImageButton视图 **/

private void hideImageButtonView() {

new Thread() {

@Override

public void run() {

try {

Thread.sleep(1500);

isHide = false;

mHandler.sendEmptyMessage(WHAT_HIDE);

} catch (InterruptedException e) {

I114gBoxLogUtils.e(TAG, e.getMessage());

}

};

}.start();

}

/** 处理异步消息 **/

@SuppressLint("HandlerLeak")

private Handler mHandler = new Handler() {

@Override

public void handleMessage(android.os.Message msg) {

// 当接收到显示左右图片的消息时

if (msg.what == 1 && mAlpha < 255) {

mAlpha += 50;

if (mAlpha > 255)

mAlpha = 255;

// 设置透明度

leftImageView.setAlpha(mAlpha);

// 刷新视图

leftImageView.invalidate();

rightImageView.setAlpha(mAlpha);

rightImageView.invalidate();

if (!isHide && mAlpha < 255)

mHandler.sendEmptyMessageDelayed(WHAT_SHOW, 100);

}

// 当接收到隐藏左右图片的消息时

else if (msg.what == 0 && mAlpha > 0) {

mAlpha -= 10;

if (mAlpha < 0)

mAlpha = 0;

// 设置透明度

leftImageView.setAlpha(mAlpha);

// 刷新视图

leftImageView.invalidate();

rightImageView.setAlpha(mAlpha);

rightImageView.invalidate();

if (isHide && mAlpha > 0)

mHandler.sendEmptyMessageDelayed(WHAT_HIDE, 100);

}

};

};

@Override

protected void onDestroy() {

I114gBoxLogUtils.d(TAG, "The onDestory method execute.");

super.onDestroy();

// 移除ImageView控件

windowManager.removeView(leftImageView);

windowManager.removeView(rightImageView);

};

}

脚本之家友情提醒大家需要注意事项如下:

需要设置WindowManager的属性,包含type、format和flags等等创建左右边图片动画加载效果,并实现onTouchEvent事件,其中MotionEvent.ACTION_DOWN为按下监听事件,MotionEvent.ACTION_UP为按下后松开事件

以上是本文给大家叙述的Android实现图片轮播切换实例代码,希望可以帮助到大家。

android实现图片自动轮播代码,Android实现图片轮播切换实例代码相关推荐

  1. android 动态画直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...

    本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...

  2. android 动态生成直线,Android使用自定义view在指定时间内匀速画一条直线的实例代码...

    本文讲述了Android使用自定义view在指定时间内匀速画一条直线的实例代码.分享给大家供大家参考,具体如下: 1.效果图: 2.自定义view实现 public class UniformLine ...

  3. HTML鼠标悬停图片置顶,jquery实现鼠标悬浮停止轮播特效

    本文实例讲述了jquery实现鼠标悬浮停止轮播特效代码.分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 一.主体程序 轮播图①(手动点击轮播) 1 2 3 4 二.CSS样式 * ...

  4. Swiper4.x使用之图片只有一张时不进行轮播,多张才进行轮播

    回想初学JavaScript时,写一个图片的轮播:那是写得惨不忍睹.现在我们再去写图片轮播的话:用Swiper(官网:https://www.swiper.com.cn)分分钟就弄好了. 但是老大又提 ...

  5. 利用swiper在vue中做轮播图,并改变轮播图的原有箭头、图片等内容

    目标:利用swiper在vue中做轮播图,并改变轮播图的原有箭头.图片等内容. 实现效果:1.点击左右箭头可切换图片. 2.点击后图片出现最左侧样式效果,只有被点击的图片有此效果,不被点击恢复默认效果 ...

  6. html图片多tab切换代码,CSS实现Tab页切换实例代码

    1.hover 移入其父元素.navI时,触发鼠标的hover态,给父元素添加样式为position:relative;z-index:1;.从而提升了层级z-index.在其子元素导航内容的层级比拼 ...

  7. axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解

    不管是在PC端还是移动端,轮播图是常见的设计元素.下面详细讲解轮播图的制作步骤. 作为Axure初学者,把最近学到的记录下来,和大家一起学习. 如何实现轮播图: 循环展示轮播图片: 将圆点与轮播图一一 ...

  8. css轮播箭头怎么隐藏,CSS——轮播图中的箭头

    注意事项: 1.定位中left权重比right高,top权重比bottom高 2.两个span标签嵌套在一个盒子中,将来显示隐藏只需要控制父盒子就行了 .box { width: 400px; hei ...

  9. 24小时轮播怎么实现的_轮播的实现方式

    /** * @author '陈桦' * @date '2016-5-10' * @description 滑动轮播插件,支持水平和垂直方向滑动轮播 * * @example html: body,u ...

  10. 在html中轮播图怎么做,HTML轮播图怎么做

    回答:基础准备工作 1.打开Axure,页面名称命名为"图片轮播":在左侧部件(线框图)中,选择动态面板,左键选中,并按住左键,拖动其至工作台页面中,在上方菜单栏将宽调整为400, ...

最新文章

  1. 占用栅格地图算法的理解
  2. python多线程端口扫描程序
  3. stella forum v1.2 用例分析
  4. 纯Rust编写的机器学习框架Neuronika,速度堪比PyTorch
  5. 【深度学习问题整理】
  6. Linux下screen的应用
  7. 通过一个例子学习Kubernetes里的PersistentVolumeClaim的用法
  8. 方形物体绕中心旋转的扭力_三维旋转
  9. Serverless 落地实践
  10. python list根据值返回位置
  11. 使用手机访问电脑上写的网页
  12. Scala学习02——Scala类和对象
  13. android 手机内存uri_Android通过Uri转化为本地绝对路径的方案(全版本适配4.1-7.0)...
  14. 计算机组成原理同步测试,计算机组成原理白中英单元练习题
  15. 零基础程序员自学编程的6种方法,你知道吗?
  16. 免费ftp空间的文件传输
  17. Linux 上如何清除 RAM 内存高速缓存,缓存和交换空间
  18. CUDA加速——共享内存介绍及其应用
  19. 大数据有哪些存储方式?
  20. 价格屠夫乐视杀入4K电视市场

热门文章

  1. python knn预测双色球_用KNN和回归分析进行预测(python)
  2. 2022焊工(初级)上岗证题目及在线模拟考试
  3. csol永恒python使用技巧大全_小甲鱼Python第028讲集合:因为懂你,所以永恒 | 课后测试题及参考答案...
  4. Java —— 连接邮箱,读取收件箱中的邮件
  5. php 万能表,手把手教你,如何使用数字万用表!
  6. 网络编程在线英英词典之客户端代码框架搭建(一)
  7. CAUSALITY FOR MACHINE LEARNING
  8. 编辑器,在线编辑器,微信编辑器,公众号编辑器,UEditor编辑器
  9. Mac刷新DNS,修改/etc/hosts立即生效
  10. 关灯游戏 Lights out (一)(极速求解)