android viewPager 轮播图

小程序:组件使用、数据绑定、条件渲染、列表渲染 准备工作: 新建一个quickstart项目,然后再pages目录下自己新建一个页面,例如t文件夹名为test,再在其下分别新建test.wxml、test.js、test.wxss文件。最后在app.json全局配置文件中配置test页面路径,项目结构如下: 1.组件的基本使用 小程序开发文档中组件部分有很多组件介绍,包含视图容器类组件,基础内容类组件、表单组件、导航组件、媒体组件、地图组件和... 阅读详情



private ViewPagerAdapter mViewPagerAdapter;
private List<ImageView> images;
private List<View> dots;
private int currentItem;
private int oldPosition = 0; //记录上一次点的位置
private ScheduledExecutorService scheduledExecutorService;//线程池

private int[] imageIds = new int[]{
        R.drawable.viewpager_one,
        R.drawable.viewpager_one,
        R.drawable.viewpager_one,

};




/**
 * 接收子线程传递过来的数据
 */
private Handler mHandler = new Handler(){
    public void handleMessage(android.os.Message msg) {
        mHomeVp.setCurrentItem(currentItem);
    }
};



/**
 * 轮播监听   
private ViewPager mHomeVp;  ui控件
 
*/mHomeVp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { dots.get(position).setBackgroundResource(R.drawable.dot_focused); dots.get(oldPosition).setBackgroundResource(R.drawable.dot_normal); oldPosition = position; currentItem = position; } @Override public void onPageScrollStateChanged(int state) { }});



private void initVariable()
{
    //显示的图片
    images = new ArrayList<ImageView>();
    for(int i = 0; i < imageIds.length; i++){
        ImageView imageView = new ImageView(getActivity());
        imageView.setBackgroundResource(imageIds[i]);
        images.add(imageView);
    }
    //显示的小点
    dots = new ArrayList<View>();
    dots.add(mView.findViewById(R.id.dot_0));
    dots.add(mView.findViewById(R.id.dot_1));
    dots.add(mView.findViewById(R.id.dot_2));


    mViewPagerAdapter = new ViewPagerAdapter();
    mHomeVp.setAdapter(mViewPagerAdapter);
}



    private class ViewPagerAdapter extends PagerAdapter
    {

        @Override
        public int getCount() {
            return images.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {

            return view == object;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView(images.get(position));
//            super.destroyItem(container, position, object);
        }


        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            container.addView(images.get(position));
            return images.get(position);
        }



    }


    @Override
    public void onStart() {
        super.onStart();

        scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
        scheduledExecutorService.scheduleWithFixedDelay(
                new ViewPageTask(),
                2,
                3,
                TimeUnit.SECONDS);


    }

    private class ViewPageTask implements Runnable{

        @Override
        public void run() {
            currentItem = (currentItem + 1) % imageIds.length;
            mHandler.sendEmptyMessage(0);
        }
    }



XML:



<FrameLayout

    android:layout_width="match_parent"
    android:layout_height="121dp">

    <android.support.v4.view.ViewPager
        android:id="@+id/home_vp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="35dip"
        android:layout_gravity="bottom"
        android:background="#33000000"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/home_vp_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="图片标题"
            android:textColor="@android:color/white"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="3dip"
            android:orientation="horizontal">

            <View
                android:id="@+id/dot_0"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_focused"/>

            <View
                android:id="@+id/dot_1"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>

            <View
                android:id="@+id/dot_2"
                android:layout_width="5dip"
                android:layout_height="5dip"
                android:layout_marginLeft="2dip"
                android:layout_marginRight="2dip"
                android:background="@drawable/dot_normal"/>


        </LinearLayout>
    </LinearLayout>
</FrameLayout>




2023年12道超详细前端vue面试题,包含答案解析。你想要的都在这里!!! 在上述示例中,我们使用元素包裹要过渡的元素,并添加了一个name特性,用于指定过渡效果名字。该组件的模板是通过外部的元素定义的,将其内容作为组件的模板。在上述示例中,我们使用vue-resource库发送GET请求,并在请求成功后将返回的数据赋值给items数组。在上述示例中,我们使用v-if和v-show指令根据visible数据属性的真假来控制两个段落元素的可见性。computed是基于它的依赖进行缓存的,只有当依赖的数据发生变化时,才会重新计算,而不是每次访问时都重新计算。 阅读详情

相关推荐

Spring框架漏洞复现大杂烩!!!

Spring框架漏洞复现大杂烩!!! 寻了半生的春天 你一笑 便是了 总体概述: Spring是一个开源框架,核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成交由Spring来创建对象 。类比Struts 2框架绝大部分的安全漏洞...

SoulCat 2万+

Android之——史上最简单图片轮播广告效果实现

如今的Android开发需求越来越来多,实现效果越来越酷炫,很多Android APP都要实现PC网站上那样的图片轮播效果,那么,这些图片的轮播效果是如何实现的呢?下面,我就跟大家一起来实现这些酷炫的功能。 一、原理 首先,将这些要轮播的图片和一些文本分别放置在不同的数据集合中,程序启动的时候默认显示一组图片和文本数据,然后启动一个定时器,每隔一段时间便替换掉显示的图片和文本数据,同时加入一些

冰河的专栏 5万+

vue面试总结60道题!!快收藏!!!

目录 1.Vue 的核心是什么 2.请简述你对 vue 的理解 3.请简述 vue 的单向数据流 4. Vue 常用的修饰符有哪些 5.v-text 与{{}}与 v-html 区别 6.v-on 可以绑定多个方法吗 7.Vue 循环的 key 作用 8.什么是计算属性 9. Vue 单页面的优缺点 10.Vuex 是什么?怎么使用?在那种场景下使用 11.Vue 中路由跳转方式(声明式/编程式) 12.vue 跨域的解决方式 13.Vue 的生命周期请简述 14.Vue 生命周

model__的博客 5542

android开发自动加手动轮播图,android常见手动和自动轮播图效果

本文实例为大家分享了android手动和自动轮播图效果的具体代码,供大家参考,具体内容如下1、准备好需要的轮播图片,图片标题(初始化,声明)。/**轮播图片*/private int[] imageIds=new int[]{R.drawable.ic_launcher,R.drawable.simple_player_control_focused_holo,R.drawable.dot_pla...

weixin_39620279的博客 284

element-ui中做select二连@change时遇到的问题(:model差异,整行row赋值导致自我设定值时不生效)

文章目录一、:model和v-model是不一样的二、:model绑定的一些问题**把选择器的选中的值给到一个flag,然后通过flag给到上面表单的info中,一次性重新全部赋予到this.mdInfo****当前行的数据row整个和单个赋予到data的info中,会有差异** 一、:model和v-model是不一样的 v-model v-model是vue.js内置的双向数据绑定,只用于表单控件标签,如input、textarea ;例:直接对input做双向数据绑定。 <input ty

weixin_46037781的博客 1009

MVVM之INotifyPropertyChanged接口的几种实现方式(1)

借助WPF/Sliverlight强大的数据绑定功能,可以比实现比MFC,WinForm更加优雅轻松的数据绑定。但是在使用WPF/Silverlight绑定时,有件事情是很苦恼的:当ViewModel对象放生改变,需要通知UI。我们可以让VM对象实现INotifyPropertyChanged接口,通过事件来通知UI。但问题就出现这里…… 一,描述问题 情形:现在需要将一个Person对象的Name熟悉双向绑定到UI中的TextBox,的确这是一件很简单的事情,但还是描述下: C# Code: publi

ting2267的博客 715

android 常见 的轮播图(可以手动和自动轮换)

1,准备好需要的轮播图片,图片标题(初始化,声明)。 /**轮播图片*/ private int[] imageIds=new int[]{ R.drawable.ic_launcher, R.drawable.simple_player_control_focused_holo, R.drawable.dot_pl

qq_15698053的博客 1488

微信小程序之首页轮播图片自适应高度

目录 一、GitHub 源码下载链接 二、代码解析 三、福利:视频资源分享 四、同类文章推荐: 注意!!!轮播的图片需要同一个尺寸大小(或者尺寸相近)!!! 注意!!!轮播的图片需要同一个尺寸大小(或者尺寸相近)!!! 注意!!!轮播的图片需要同一个尺寸大小(或者尺寸相近)!!! 一、GitHub 源码下载链接 https://github.com/yyzheng1729/wx_...

weidong_y的博客 2万+

简单易懂:Vue3框架三天速成(一)

学习Vue框架首先需要具备基本的HTML5、CSS3、JavaScript基础,了解基本概念以及用法再来学习Vue会事半功倍!

大三软件工程在读,喜爱编程,分享。 2980

(一)C#Winform导入Excel数据到datagridview控件

C#Winform导入Excel数据到datagridview控件 #此次导入Excel数据借助了ExcelDataReader插件。(由于我需要的是打开工作簿时能够选择工作表绑定于datagridview控件,通过网上资源的浏览与借鉴,ExcelDataReader能满足我的需求。) 一、插件安装 (1)安装ExcelDataReader插件(如图) (2)查看是否安装成功(如图表明已安装成功) 二、代码编写 (1)为了方便使用,打开文件的过程构造为一个方法 DataTableCollection

qq_44199450的博客 6274

抖音小程序填坑指南

最近抖音小程序比较火,公司部门也想尝试获取一些流量,于是开始吭哧吭哧不断徘徊于踩坑与填坑之间,下面记录一些最近小程序开发中碰到的各种问题~ 1.https://microapp.bytedance.com/首先是小程序开发平台;这里提一句抖音小程序实际就是字节跳动小程序,开发一个小程序可以在它旗下的今日头条和抖音共同使用;编辑器的话可以在这个开发平台下载字节跳动开发者工具,也可以使用vscode或者webstorm等其他编辑器,可以安装一些编辑器插件,这样开发起来更舒适;如果不想直接原生开发也可以去找一.

An_cf的博客 3579

【Vue知识点】——Vue2和Vue3的数据劫持

Vue2的Object.defineProperty和Vue3的Proxy实现数据劫持

m0_50785976的博客 2369

Angular 开发

Angular 企业实战开发 1. 概述 Angular 是一个使用 HTML、CSS、TypeScript 构建客户端应用的框架,用来构建单页应用程序。 Angular 是一个重量级的框架,内部集成了大量开箱即用的功能模块。 Angular 为大型应用开发而设计,提供了干净且松耦合的代码组织方式,使应用程序整洁更易于维护。 Angular Angular 中文 Angular CLI 2. 架构预览 2.1 模块 Angular 应用是由一个个模块组成的,此模块指的不是ESModule,而是 Ng

qt的博客 5846

基于《狂神说Java》Vue--学习笔记

本笔记仅做学习与复习使用,不存在刻意抄袭。给各位学友强烈推荐《遇见狂神说》他的整套Java学习路线使我获益匪浅!!!点击跳转至遇见狂神说哔哩哔哩首页如果你也是狂神的小迷弟,可以加我好友一起探讨学习。...

wudidahuanggua的博客 1772

STARLIMS-HTML5

每个控件包含:•Properties•Events•Methods【备注】:可以将每个控件,当做一个封装了特定功能和属性的class。【注意】:首字母都是大写的!!!事件处理程序是javaScript函数,会在事件发生时,自动执行。

qq_31532983的博客 2692

项目中登录注册页傻瓜教程,太简单了!!!

简单说一下思路: 首先写结构,写出一个完整的登录注册页,简单配置好路由,当点击登录或注册时,使它能够进行简单的页面跳转。如下图(当然你可以自己写也可以参考element ui框架搭建项目结构): 它们之间的html结构基本一样,只是登录页是提交登录,注册页是向后台存储注册的信息,注册成功后登录页才能账号密码进行登录。组件信息(components),路由信息(router),视图(views)等如图所示: 写好结构就开始写怎么注册,因为你不注册是不能登录的!注册里面有两个i...

model__的博客 1170

Vue经典实例之可编辑的表格table(史上最简单方便的处理方式,比用element容易理解),同时处理input获取焦点的问题!不好用你找我

你要问前端开发难不难,我就得说计算机领域里常说的一句话,这句话就是『难的不会,会的不难』,对于不熟悉某领域技术的人来说,因为不了解所以产生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;当学会这项技术之后,知道什么什么技术能做到什么做不到,只是做起来花多少时间的问题而已,没啥难的,所以就是『会的不难』。我特地针对初学者整理一套前端学习资料分享给大家,戳这里即可领取生神秘感,神秘感就会让人感觉很难,也就是『难的不会』;

2301_79099480的博客 1101

Labview中创建与监视共享变量

共享变量具有全局变量的所有特性,可以在不同的VI之间传递数据,同时避免了全局变量数据的竞争问题。更重要的是,与全局变量相比,通过它可以在网络中的不同计算机间相互通信。共享变量可以使用Labview支持的任意数据类型,甚至可以是I/O点。它采用了内部的缓冲机制,避免了共享变量同时写入造成的竞争问题。Labview通过共享变量引擎(Share Varible Engine,SVE),负责管理单个或多个系统上的共享变量的使用和连接。

qq_60942249的博客 2001
上一篇: 底部弹出PopupWindow并且背景变为半透明效果
下一篇: listview 复用数据错误以及listview item中的控件之间修改状态
xy%
xy%
博客等级 码龄11年 10粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值