Android XBanner使用详解

原Android XBanner使用详解

基本使用1.添加Gradle依赖
依赖

dependencies {
    compile 'com.xhb:xbanner:1.3.1'
}

在清单文件中添加网络权限

由于XBanner中有可能从网络加载图片,因此也需要导入一些图片加载框架的依赖,如Glide
compile 'com.github.bumptech.glide:glide:3.7.0' compile 'jp.wasabeef:glide-transformations:1.0.6'

在布局文件中添加XBanner

<com.stx.xhb.xbanner.XBanner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/banner_1"
        android:layout_width="match_parent"
        android:layout_height="180dp"
        app:AutoPlayTime="3000"
        app:pointsContainerBackground="#44aaaaaa"
        app:pointNormal="@drawable/shape_noraml"
        app:pointSelect="@drawable/shape_selected"
        app:pointsPosition="RIGHT"
        app:tipTextSize="12sp"
        app:isShowNumberIndicator="true"
        app:isShowIndicatorOnlyOne="true"
        app:pageChangeDuration="800"/>

XBanner属性

属性名          属性说明               属性值
isAutoPlay      是否支持自动轮播     boolean类型,默认为true
autoPlayTime    图片轮播事件间隔            int类型,默认5000ms
pointNormal     指示器未选中时的状态    drawable类型,不指定的话使用默认状态点
pointSelect     指示器选中时的状态     drawable类型,不指定的话使用默认状态点
pointsVisible   是否显示指示器        boolean类型,默认为true
pointsPosition  指示点位置       CENTER、LEFT、RIGHT,默认CENTER
pointsContainerBackground       指示器条背景  color类型、drawable类型、mipmap类型等
pointContainerPosition  指示器条位置      TOP、BOTTOM,默认BOTTOM
pointContainerLeftRightPadding  指示点容器左右内间距     dimension类型,默认10.0dp
pointTopBottomPadding   指示点上下内间距        dimension类型,默认6.0dip
pointLeftRightPadding   指示点左右内间距        dimension类型,默认3.0dip
tipTextColor    提示文字的颜色         reference类型
tipTextSize     提示文字的大小         dimension类型,默认10.0dp

在Activity或者Fragment中配置

banner = (XBanner) findViewById(R.id.banner);
List<String> imgesUrl = new ArrayList<>();
        imgesUrl.add("http://img3.fengniao.com/forum/attachpics/913/114/36502745.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/99381473502384338.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160910/77991473496077677.jpg");
        imgesUrl.add("http://imageprocess.yitos.net/images/public/20160906/1291473163104906.jpg");
        // 为XBanner绑定数据
        banner .setData(imgesUrl,null);//第二个参数为提示文字资源集合
         // XBanner适配数据
        banner.setmAdapter(new XBanner.XBannerAdapter() {
            @Override
            public void loadBanner(XBanner banner, View view, int position) {
                Glide.with(MainActivity.this).load(imgesUrl.get(position)).into((ImageView) view);
            }
        });
        // 设置XBanner的页面切换特效,选择一个即可,总的大概就这么多效果啦,欢迎使用
        banner.setPageTransformer(Transformer.Default);//横向移动

自动滑动属性

    banner.setPageTransformer(Transformer.Alpha); //渐变,效果不明显

    banner.setPageTransformer(Transformer.Rotate);  //单页旋转

    banner.setPageTransformer(Transformer.Cube);    //立体旋转

    banner.setPageTransformer(Transformer.Flip);  // 反转效果

    banner.setPageTransformer(Transformer.Accordion); //三角换页

    banner.setPageTransformer(Transformer.ZoomFade); // 缩小本页,同时放大另一页

    banner.setPageTransformer(Transformer.ZoomCenter); //本页缩小一点,另一页就放大

    banner.setPageTransformer(Transformer.ZoomStack); // 本页和下页同事缩小和放大

    banner.setPageTransformer(Transformer.Stack);  //本页和下页同时左移

    banner.setPageTransformer(Transformer.Depth);  //本页左移,下页从后面出来

    banner.setPageTransformer(Transformer.Zoom);  //本页刚左移,下页就在后面
    // 设置XBanner页面切换的时间,即动画时长
    banner.setPageChangeDuration(1000);

监听广告 item 的单击事件

 banner.setOnItemClickListener(new XBanner.OnItemClickListener() {
            @Override
            public void onItemClick(XBanner banner, int position) {
                Toast.makeText(MainActivity.this, "点击了第"+position+"图片", Toast.LENGTH_SHORT).show();
            }
        });

建议在下面两个生命周期中调用下面的方法

  @Override
    protected void onResume() {
        super.onResume();
        banner.startAutoPlay();
    }

    @Override
    protected void onStop() {
        super.onStop();
        banner.stopAutoPlay();
    }

混淆配置##XBanner 图片轮播混淆配置
-keep class com.stx.xhb.xbanner.**{*;}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CountDownLatch是Java中的一个同步工具类,用于控制多个线程的执行顺序。它通过一个计数器来实现,该计数器初始化为一个正整数,每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器的值减到0时,所有等待的线程就会被唤醒继续执行。 在Android中,CountDownLatch可以用于等待多个异步操作完成后再执行某个任务,或者等待多个线程都达到某个状态后再继续执行。 下面是CountDownLatch的基本使用方法: 1. 创建CountDownLatch对象,并指定计数器的初始值。 ```java CountDownLatch latch = new CountDownLatch(3); // 计数器初始值为3 ``` 2. 在需要等待的地方调用`await()`方法,使当前线程进入等待状态,直到计数器值为0时才会继续执行。 ```java try { latch.await(); // 等待计数器值为0 } catch (InterruptedException e) { e.printStackTrace(); } ``` 3. 在需要通知其他线程继续执行的地方调用`countDown()`方法,将计数器的值减1。 ```java latch.countDown(); // 计数器减1 ``` 下面是一个简单的示例,演示了如何使用CountDownLatch等待多个线程完成后再执行某个任务: ```java import java.util.concurrent.CountDownLatch; public class CountDownLatchExample { public static void main(String[] args) { final CountDownLatch latch = new CountDownLatch(3); for (int i = 0; i < 3; i++) { final int threadNum = i; new Thread(() -> { try { Thread.sleep(1000); System.out.println("Thread " + threadNum + " completed."); latch.countDown(); } catch (InterruptedException e) { e.printStackTrace(); } }).start(); } try { latch.await(); System.out.println("All threads completed. Start executing the task..."); // 执行任务 } catch (InterruptedException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们创建了一个初始值为3的CountDownLatch对象。然后创建了3个线程,每个线程会在执行完任务后将计数器减1。主线程调用`await()`方法等待计数器的值变为0,当所有线程都执行完任务后,主线程才会继续执行并输出"All threads completed. Start executing the task..."。 希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值