SlideView是一个Android上的以滑动揭示的方式显示并切换图片的View,以视觉对比的方式把一套相似的图片展示出来。

示例

  • 翻页图片揭示效果:

特性

  • 设置一组(List<ImageInfo>)待加载的图片(本地图片,网络图片),通过(ImageLoader)库加载出图片并按List的顺序显示图片。

  • 通过手势识别(GestureDetector),判断用户手指往左或者往右滑动,根据滑动位移揭开和盖上图片,当手指松开时,根据滑动速度和滑动位移的距离决定是翻页,还是滑回当前页。

  • 翻页或滑回时通过ScrollerCompat来计算并画出平滑动画,在规定时间内平滑过度。

  • 继承自View,可在xml布局文件中使用,也可以java代码使用。

  • 在View的onDraw方法中画出当前要显示的图片,文字(名字)和指示器。

源码:

使用方法

  1. 布局中定义SlideImageView:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/darker_gray"
    > <com.homg.slideview.SlideImageView
    android:id="@+id/main_siv"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerInParent="true"
    app:indicatorColor="#FF0000FF"
    app:indicatorRadius="5dp"
    app:nameTextColor="#FF0000FF"
    app:nameTextSize="26sp"
    app:textMargin="5dp"
    />
    </RelativeLayout>
  2. 设置SlideImageView,设置图片源,和图片切换监听器:

    public class MainActivity extends AppCompatActivity {
    private static final String TAG = MainActivity.class.getSimpleName();
    private SlideImageView mSlideImageView;
    private String[] urls = new String[]{"assets://test_1.jpg", "assets://test_2.jpg",
    "assets://test_3.jpg",
    "assets://test_4.jpg",
    "assets://test_5.jpg"}; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ImageLoaderConfiguration configuration = ImageLoaderConfiguration
    .createDefault(this);
    ImageLoader.getInstance().init(configuration);
    setContentView(R.layout.activity_main);
    mSlideImageView = (SlideImageView) findViewById(R.id.main_siv);
    mSlideImageView.setOnSlideImageListener(new SlideImageView.OnSlideImageListener() {
    @Override
    public void onShowImage(int index, SlideImageView.ImageInfo imageInfo) {
    Log.i(TAG, String.format("index=%d,image info=%s", index, imageInfo));
    }
    });
    List<SlideImageView.ImageInfo> imageInfoList = new ArrayList<>(5);
    for (int i = 0; i < urls.length; i++) {
    SlideImageView.ImageInfo tempInfo = new SlideImageView.ImageInfo(urls[i], "Image-" + i);
    imageInfoList.add(tempInfo);
    }
    mSlideImageView.setImageInfos(imageInfoList);
    }
    }
  3. build.gradle中加入ImageLoader的依赖:

    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
    }

一个Android上的以滑动揭示的方式显示并切换图片的View的更多相关文章

  1. css滑动鼠标到img后,切换图片

    写了个样例: <a href="#"><img src="http://csdnimg.cn/pubfooter/images/gongshang_lo ...

  2. 如何在Android上编写高效的Java代码

    转自:http://www.ituring.com.cn/article/177180 作者/ Erik Hellman Factor10咨询公司资深移动开发顾问,曾任索尼公司Android团队首席架 ...

  3. android中无限循环滑动的gallery实例

    android中无限循环滑动的gallery实例 1.点击图片有变暗的效果,使用imageview.setAlpha(),并且添加ontouchListener public void init() ...

  4. android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)

    首先我们还是看一些示例:(网易,新浪,百度) 显示效果都不错,可是手感就不一样了,百度最棒,网易还行,新浪就操作很不好,这里我说的是滑动切换图片.自己可以测试一下.不得不说牛叉的公司确实有哦牛叉的道理 ...

  5. 【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)

    首先我们还是看一些示例:(网易,新浪,百度)      下面我简单的介绍下实现方法:其实就是listview addHeaderView.只不过这个view是一个可以切换图片的view,至于这个vie ...

  6. Android中TextView设置最大长度,超出显示省略号

    今天在项目中碰到一个问题,在一个页面的顶部的标题栏显示公司的名字,但由于公司名称较长,显示不开,影响美观.故在网上查阅资料,在此做个小的总结. TextView中有个ellipsize属性,作用是当文 ...

  7. Android:使用ViewPager实现左右滑动切换图片(图上有点点)

    在以下实例的基础上加上点点 Android:使用ViewPager实现左右滑动切换图片 (简单版) 效果预览: 因为要把点点放图片上,所以修改布局为相对布局: <?xml version=&qu ...

  8. android一个页面上多个listview

    android一个页面上多个listview,在滚动的时候,需要两个listview能够一起滚动,看起来是一个view. 这个功能的具体实现,参考: http://blog.csdn.net/xia2 ...

  9. Android上实现各种风格的隐藏菜单,比如左右滑动菜单、上下滑动显示隐藏菜单

    Android上的菜单展示风格目前是各式各样的,但用的最多且体验最好的莫过于左右滑动来显示隐藏的菜单本示例实现了各种方式的菜单展示效果,只有你想不到的源码:https://github.com/Sim ...

随机推荐

  1. msgpack库的神奇用法

    一般来说,我们会把头部和实际消息分开定义,因为内部工作的worker之间发送消息有些额外的字段,这些字段不属于实际的消息.这时候我们会把worker消息中一个字段定义为interface{}或者obj ...

  2. Virtual Box配置CentOS7网络

    1.先管理中配置两个网络 最好的办法就是使用两块网卡,nat(虚拟机访问互联网,使用10.0.2.x段)和host-only(虚拟机和主机互相通信,使用192.168.56.x段) 2.接下来对Cen ...

  3. 从Unity中的Attribute到AOP(二)

    上一篇文章我们初步了解了一下Attributes的含义,并且使用系统自带的Attributes写了点代码.在进一步解剖我们的代码之前,我觉得有个概念可能需要巩固一下:什么是元数据? 我们知道C#代码会 ...

  4. Java异常抛出及try,catch应用实例

    class lanpingException extends Exception { lanpingException(String msg) { super(msg); } } class maoy ...

  5. 洛谷 P1553 数字反转(升级版)【字符串+STL stack】

    P1553 数字反转(升级版) 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数.整数反转是将所有数位对调 ...

  6. [51nod1407]与与与与

    有n个整数,问从他们中取出若干个数字相与之后结果是0的有多少组. 答案比较大,输出对于 1,000,000,007 (1e9+7)取模后的结果. Input 第一行输入一个整数n.(1<=n&l ...

  7. [hdu5225][BC#40]Tom and permutation

    好久没写题解了..GDKOI被数位DP教做人了一发,现在终于来填数位DP的大坑了>_<. 发现自己以前写的关于数位DP的东西...因为没结合图形+语文水平拙计现在已经完全看不懂了嗯. 看来 ...

  8. Codeforces Round #343 (Div. 2)-629A. Far Relative’s Birthday Cake 629B. Far Relative’s Problem

    A. Far Relative's Birthday Cake time limit per test 1 second memory limit per test 256 megabytes inp ...

  9. jq实现上传头像并实时预览功能

    效果 页面结构 <form action="" name="form0" id="form0"> <input type= ...

  10. Linux文件链接hard link与symbolic link

    Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...