使用Handler中postDelayed方法实现广告页面无限循环轮播效果

100G FPGA UDP移植上板:从GTY/CMAC到iperf3打流实测 FPGA在高速以太网设计中扮演关键角色,从千兆到百G,接口速率与数据位宽的变化带来了全新的设计挑战。100G UDP数据通路通常由GTY高速收发器、CMAC硬核以及用户侧协议栈构成,其中AXI4-Stream接口与跨时钟域处理是决定系统稳定性的核心环节。本文将梳理从开源协议栈选型、CMAC配置、位宽转换到上板调试的完整技术路线,结合iperf3打流实测,分享如何规避常见暗坑并提升吞吐率。该方案适用于网络流量处理、数据中心互连和高速数据采集等场景,为需要冲击100G线速的FPGA开发者提供可复用的实践经验。 阅读详情

效果展示:
这里写图片描述

直接上代码:
1.MainActivity的代码:

public class MainActivity extends Activity
{
    private ViewPager viewPager;

    private ImageView[] imageViews;

    private int COUNT = 4;

    private Handler mHandler;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        viewPager = (ViewPager) findViewById(R.id.viewpager);
        fillData();
        initViewpager();
        mHandler=new Handler();
    }

    private void startLoop(final int delay){
        mHandler.postDelayed(new Runnable() {
            @Override
            public void run() {
                viewPager.setCurrentItem(viewPager.getCurrentItem()+1);
                startLoop(delay);
            }
        },delay);
    }

    private void fillData()
    {
        imageViews = new ImageView[COUNT];
        ImageView imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setImageResource(R.mipmap.car1);
        imageViews[0] = imageView;

        imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setImageResource(R.mipmap.car2);
        imageViews[1] = imageView;

        imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setImageResource(R.mipmap.car3);
        imageViews[2] = imageView;

        imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setImageResource(R.mipmap.car4);
        imageViews[3] = imageView;
    }

    // 设置Adapter
    private void initViewpager()
    {
        LoopViewpagerAdapter homepager = new LoopViewpagerAdapter(this,
                imageViews);
        viewPager.setAdapter(homepager);
        viewPager.setCurrentItem(1000 / 2
                - (1000 / 2 % COUNT));
    }

    public void doClick(View view){
        if(view.getId()==R.id.btn_start){
            startLoop(1000);
        }else{
            mHandler.removeMessages(0);
        }
    }

}

2.适配器的代码:

public class LoopViewpagerAdapter extends PagerAdapter
{
    private ImageView[] imageViews;
    private Context mContext;

    public LoopViewpagerAdapter(Context context, ImageView[] images)
    {
        this.imageViews = images;
        this.mContext = context;
    }
    @Override
    public int getCount()
    {
        return 1000;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1)
    {
        return arg0 == arg1;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object)
    {
        container.removeView(imageViews[position % imageViews.length]);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position)
    {
        View iv = imageViews[position % imageViews.length];
        // if (container != null)
        // {
        // container.removeView(iv);
        // }
        container.addView(iv);
        return iv;
    }

}

3.xml布局中的代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

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

    <Button
        android:id="@+id/btn_start"
        android:layout_width="match_parent"
        android:onClick="doClick"
        android:layout_height="wrap_content"
        android:text="开始"/>
    <Button
        android:id="@+id/btn_stop"
        android:layout_width="match_parent"
        android:onClick="doClick"
        android:layout_height="wrap_content"
        android:text="结束"/>
</LinearLayout>
全覆盖路径规划开源项目Clean-robot-turtlebot3关键函数解析(上) 本系列文章主要介绍全覆盖路径规划开源项目Clean-robot-turtlebot3的相关内容,包含如下四篇文章,分别介绍了开源项目Clean-robot-turtlebot3流程的概括总结、ROS坐标系常用坐标及其变换、Clean-robot-turtlebot3关键函数解析等内容。 阅读详情

相关推荐

物联网技术-第2章-物联网技术架构

• 物联网具有很强的异构性• 为实现异构设备之间的互联、互通与互操作,物联网需要以一个开放的分层的可扩展的为框架。

m0_73804764的博客 2976

Android实现定时循环、延时方式实现

Android使用 thread、handler等实现定时循环、延时操作

冰糖会发光 2731

交叉验证选型指南:k折、留一法、时序与分层CV实战决策

交叉验证是评估机器学习模型泛化能力的基础技术,其核心在于通过系统性数据重划分,缓解有限样本对真实分布估计的偏差。原理上,它通过控制训练-验证数据的独立性与代表性,诊断过拟合风险并提升性能指标的稳定性。技术价值体现在避免单次切分导致的结果偶然性、数据利用低效及验证集污染等问题。典型应用场景涵盖分类任务中的类别不平衡处理、时间序列预测的因果约束、用户行为建模中的数据泄露防控等。本文聚焦k折交叉验证、留一法、时间序列交叉验证与分层抽样等主流方法的适用边界与工程落地要点,结合过拟合诊断和泛化能力评估两大热词,提供可

dienangpiao2051的博客 475

handler.postDelayed循环倒计时

int time = 120; handler.postDelayed(new Runnable() { @Override public void run() { tv_record_time.setText(time + "s");

张小贝的博客 2098

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 292

VS2015+C++实战:手把手教你用海康MVS里的Demo搞定多相机同步采图与保存

本文详细解析了在VS2015+C++环境下,利用海康威视MVS工业相机SDK实现多相机同步采图与保存的全流程。从环境准备、SDK选择到多相机初始化、同步采图方案,再到异常处理与性能优化,提供了实战技巧和代码示例,帮助开发者快速掌握工业相机二次开发的核心技术。

weixin_29170327的博客 280

android 使用Handler.postDelayed方法实现循环执行定时任务

1,首先创建一个Handler对象    Handler handler=new Handler();   2,然后创建一个Runnable对 Runnable runnable=new Runnable(){      @Override      public void run() {       // TODO Auto-generated metho

sinat_30058101的博客 2万+

FreeRTOS深入教程(任务创建的深入和任务调度机制分析)

本篇文章将带大家深入学习任务的创建和分析任务调度的机制。本篇文章深入的讲解了任务创建的内部实现和任务调度的源代码分析和实现,学习这篇文章有助于更深入的学习FreeRTOS的源码。

m0_49476241的博客 6390

Handler postDelayed的实现原理

Android消息队列Handler的延迟消息实现原理。

u012944685的专栏 1177

【感知模块算法】障碍物detect+trace+prediction方向介绍

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录系列文章目录前言一、多维度看感知问题,体会复杂性二、障碍物/环境目标detect方向1.视觉目标检测方向(1)图像处理认知(2)视觉基础理论部分1、获取数据集---python网页爬虫、买数据、自己录数据、使用开源比赛的数据集2、opencv库的学习3、深度学习框架学习(3)视觉目标检测理论(1)目标检测的概念(2)目标检测的应用场景(3)现有目标检测框架原理及论文【这仅仅是我当初入门学习的框架~

qq_35635374的博客 2894

ZED双目相机环境配置

ZED SDK 安装文件夹中有一个 Python 脚本(get_python_api.py),可以自动检测操作系统、CUDA 和 Python 版本并下载相应的预编译 Python API 包(pyzed)。安装SDK成功后,我们进入ZED SDK文件夹中的tools子文件夹,运行ZED Explorer.exe 以及 ZED Depth Viewer.exe,查看ZED相机是否能正常启用工作。在本例中,我们简单地检索ZED相机的序列号:打开 ZED相机,然后打印其序列号,然后关闭相机。

qq_53545309的博客 2134

使用Handler中postDelayed方法实现广告页面轮播效果

效果展示: 概况: 1.使用handler进行线程之间的通讯 2 Handler的post方法作用: 将run方法里面的代码推到handler实例化的那个线程(主线程)中运行 3. postDelayed方法作用: 该继承post方法的特点,并且可以根据第二个参数进行延时执行。可以做广告轮播的效果。实现思路: 1.初步构建ViewPager。 2.初始化数据。 3.适配数据,把适

用心去专研技术,用代码改变世界__ Mr.Wang 1132

YOLO26 正式发布源代码!极致速度优化方案, 面向工业级落地的目标检测模型!

YOLO26 作为 Ultralytics 公司于 2025 年 9 月发布的最新一代目标检测模型,在架构设计和技术实现上展现了显著的创新。本文深入分析了 YOLO26 的核心架构改进和技术原理,重点探讨了其在边界框回归、推理流程、损失函数设计和优化算法方面的突破性进展。

魔改工程师的博客 1243

java postdelayed_Android开发使用Handler的PostDelayed方法实现图片轮播功能

本文实例讲述了Android开发使用Handler的PostDelayed方法实现图片轮播功能。分享给大家供大家参考,具体如下:第一步:创建MainActivity类public class BaseActivity extends ActionBarActivity {private List mDatas;private ViewPager mViewPager;private boolean...

weixin_39796238的博客 169

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android 使用Handler的PostDelayed方法实现图片的轮播

Android 使用Handler的PostDelayed方法实现图片的轮播第一步:创建MainActivity类 public class BaseActivity extends ActionBarActivity { private List<String> mDatas; private ViewPager mViewPager;

lovoo的博客 2627

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android_Handler的postDelayed

主要说一下Handler中postDelayed(Runnable long)的方法,这个方法中传进去两个参数,第一个参数类型是实现Runnable 接口的实现类,第二个参数是一个long类型的数,主要表示多长时间执行一次Runnable实现类的run方法。 从上面的所描述的可以实现一个简单的功能,就是在手机界面不断变换图片的功能。package com.example.handlerdemo;i

itszt888的博客 772

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

android定时任务发照片,handler实现定时任务功能,每4秒轮播图播映

我们知道handler的功能有两个,一个是实现定时任务,另一个是实现主线程和子线程的信息通信,尤其是安卓中耗时操作不能在主线程进行,更新界面操作不能在子线程进行,在这种需求背景下,于是出现了handler+thread的搭配实现子线程读取网络数据,读取完通知主线程更新UI。不过我这一篇写的是handler的定时任务功能。首先要了解重点的方法handler类中的postDelayed(Runnabl...

weixin_31444279的博客 592

android ViewPager+Handler实现图片轮播

4、使用Handler的postDelayed定时刷新设置ViewPager第几个图片。1、使用ViewPager控件,写一个ViewPager适配器。搜索框下面的就是viewpage实现的图片轮播实现效果图。3、ViewPager绑定适配器。2、把图片数组放在适配器里面。

mmsx990的博客 441

Handler的简单使用介绍

Handler的简单使用介绍       Handler在android程序开发中使用的非常频繁、我们知道android是不允许在子线程中更新UI的,这就需要借助Handler来实现,那么你是否想过为什么一定要这个这样子做呢?而且Handler的内部消息处理机制究竟是什么样的呢,我们了解了之后还可以做点什么事?带着这些疑问我系统的学习了一个讲解Handler原理的课程,今天就在这里将

qq2682005982的博客 249

利用ViewPager实现的Android轮播|定时器的使用

public class MainActivity extends AppCompatActivity { ViewPager viewPager; List imageViewList=new ArrayList(); int currentItem=300; long lastTime; int[] resId={R.drawable.xiaoer,R.

yancychas的博客 686

android 广告无限轮播,ViewPager两种方式实现无限轮播

给自己的忠告:虽然轮子很好用,但是使用轮子的前提是:如果不去封装一些复杂的功能,自己会用最基本的方法写一个,不然再好的轮子那也是别人的,当自己项目遇到和轮子不一样的地方,那就只能束手无策或者改人家的源码,当然能看懂轮子的封装思想自己学以致用并且能够很轻松的更改源码那是最好不过的了。1. 实现思路两种方案:(1)采用Adapter内的getCount()方法返回Integer.MAX_VALUE。(...

weixin_34889287的博客 818

Handler的postDelayed(Runnable, long)

handler.postDelayed(myRunnable,1000)是为了轮播图片,每隔1000ms后执行一次run方法,实现轮播实例如下: public void MesageColse(){ Runnable runnable=newRunnable(){ @Override public void run(){ ...

weixin_30340617的博客 217

Handler+viewPager实现图片轮播

实现图片轮播的主要方法是: viewPager.setcunrrentItem(); viewPager.setCurrentItem((viewPager.getCurrentItem()+1)%viewPager.getAdapter().getCount()); 通过求余的算法即可以完成 图片的轮播。 那么定时的通知图片切换播放就成了重点,我们这里采用: 通过查看源码,我们需要

NELA的博客 849

Android控件轮播效果的延迟启动和内存泄漏

你好

wodongx123的博客 484

用handler.postDelayed做定时时注意

为什么80%的码农都做不了架构师?>>> ...

weixin_33693070的博客 528

XBanner深度解析:从设计哲学到实现原理的Android轮播框架技术内幕

**XBanner**是一款功能强大的Android图片轮播框架,支持图片无限轮播、自定义指示点、显示提示文字、切换动画、自定义布局,一屏多显、视频图片混合轮播等功能。本文将从设计思想、实现原理、性能优化等多个维度,深入剖析这个优秀的Android轮播框架。 ## 问题提出:为什么需要专门的轮播框架? 在移动应用开发中,轮播图是展示内容、广告、产品推荐等信息的常见组件。然而,直接使用ViewP

gitblog_00930的博客 581
上一篇: 自定义书签导航
下一篇: SurfaceView与Canvas的结合实现气泡动态壁纸
Allen-华
博客等级 码龄11年 10粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值