iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现图片文字轮播特效
  • 459
分享到

Android实现图片文字轮播特效

图片轮播Android 2022-06-06 09:06:34 459人浏览 独家记忆
摘要

本文实例讲解了Android实现图片文字轮播特效的详细代码,分享给大家供大家参考,具体内容如下 图片轮播是类似知乎日报上的一个轮播效果,如下图。 好了直接进入正题,首先是出示

本文实例讲解了Android实现图片文字轮播特效的详细代码,分享给大家供大家参考,具体内容如下

图片轮播是类似知乎日报上的一个轮播效果,如下图。

好了直接进入正题,首先是出示一下效果:

MainActivity:


import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.Executors; 
import java.util.concurrent.ScheduledExecutorService; 
import java.util.concurrent.TimeUnit; 
import android.os.Bundle; 
import android.app.Activity; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.ImageView.ScaleType; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
public class MainActivity extends Activity { 
  //viewpager 
  private ViewPager view_pager; 
  private LinearLayout ll_dotGroup; 
  private TextView newsTitle; 
  private int imgResIds[] = new int[]{R.drawable.a, R.drawable.b, 
      R.drawable.c, R.drawable.d, R.drawable.b}; 
  //存储5张图片 
  private String textview[]=new String[]{"12412515125","fawfafawf" 
      ,"13f1f12f211","1251f1f12","1t1f12f121"}; 
  //存储5个目录 
  private int curIndex = 0; 
  //用来记录当前滚动的位置 
  PicsAdapter picsAdapter; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setViewPager(); 
  } 
  private void setViewPager() { 
    newsTitle=(TextView)findViewById(R.id.NewsTitle); 
    view_pager = (ViewPager) findViewById(R.id.view_pager); 
    ll_dotGroup = (LinearLayout) findViewById(R.id.dotgroup); 
    picsAdapter = new PicsAdapter(); // 创建适配器 
    picsAdapter.setData(imgResIds); 
    view_pager.setAdapter(picsAdapter); // 设置适配器 
    view_pager.setOnPageChangeListener(new MyPageChangeListener()); //设置页面切换监听器 
    initPoints(imgResIds.length); // 初始化图片小圆点 
    startAutoScroll(); // 开启自动播放 
  } 
  // 初始化图片轮播的小圆点和目录 
  private void initPoints(int count) { 
    for (int i = 0; i < count; i++) { 
      ImageView iv = new ImageView(this); 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 
          20, 20); 
      params.setMargins(0, 0, 20, 0); 
      iv.setLayoutParams(params); 
      iv.setImageResource(R.drawable.dot1); 
      ll_dotGroup.addView(iv); 
    } 
    ((ImageView) ll_dotGroup.getChildAt(curIndex)) 
        .setImageResource(R.drawable.dot2); 
    newsTitle.setText(textview[curIndex]); 
  } 
  // 自动播放 
  private void startAutoScroll() { 
    ScheduledExecutorService scheduledExecutorService = Executors 
        .newSingleThreadScheduledExecutor(); 
    // 每隔4秒钟切换一张图片 
    scheduledExecutorService.scheduleWithFixedDelay(new ViewPagerTask(), 5, 
        4, TimeUnit.SECONDS); 
  } 
  // 切换图片任务 
  private class ViewPagerTask implements Runnable { 
    @Override 
    public void run() { 
      runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
          int count = picsAdapter.getCount(); 
          view_pager.setCurrentItem((curIndex + 1) % count); 
        } 
      }); 
    } 
  } 
  // 定义ViewPager控件页面切换监听器 
  class MyPageChangeListener implements OnPageChangeListener { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, 
                  int positionOffsetPixels) { 
    } 
    @Override 
    public void onPageSelected(int position) { 
      ImageView imageView1 = (ImageView) ll_dotGroup.getChildAt(position); 
      ImageView imageView2 = (ImageView) ll_dotGroup.getChildAt(curIndex); 
      if (imageView1 != null) { 
        imageView1.setImageResource(R.drawable.dot2); 
      } 
      if (imageView2 != null) { 
        imageView2.setImageResource(R.drawable.dot1); 
      } 
      curIndex = position; 
      newsTitle.setText(textview[curIndex]); 
    } 
    boolean b = false; 
    @Override 
    public void onPageScrollStateChanged(int state) { 
      //这段代码可不加,主要功能是实现切换到末尾后返回到第一张 
      switch (state) { 
        case 1:// 手势滑动 
          b = false; 
          break; 
        case 2:// 界面切换中 
          b = true; 
          break; 
        case 0:// 滑动结束,即切换完毕或者加载完毕 
          // 当前为最后一张,此时从右向左滑,则切换到第一张 
          if (view_pager.getCurrentItem() == view_pager.getAdapter() 
              .getCount() - 1 && !b) { 
            view_pager.setCurrentItem(0); 
          } 
          // 当前为第一张,此时从左向右滑,则切换到最后一张 
          else if (view_pager.getCurrentItem() == 0 && !b) { 
            view_pager.setCurrentItem(view_pager.getAdapter() 
                .getCount() - 1); 
          } 
          break; 
        default: 
          break; 
      } 
    } 
  } 
  // 定义ViewPager控件适配器 
  class PicsAdapter extends PagerAdapter { 
    private List<ImageView> views = new ArrayList<ImageView>(); 
    @Override 
    public int getCount() { 
      if (views == null) { 
        return 0; 
      } 
      return views.size(); 
    } 
    public void setData(int[] imgResIds) { 
      for (int i = 0; i < imgResIds.length; i++) { 
        ImageView iv = new ImageView(MainActivity.this); 
        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams( 
            ViewGroup.LayoutParams.MATCH_PARENT, 
            ViewGroup.LayoutParams.MATCH_PARENT); 
        iv.setLayoutParams(params); 
        iv.setScaleType(ScaleType.FIT_XY); 
        //设置ImageView的属性 
        iv.setImageResource(imgResIds[i]); 
        views.add(iv); 
      } 
    } 
    public Object getItem(int position) { 
      if (position < getCount()) 
        return views.get(position); 
      return null; 
    } 
    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
      return arg0 == arg1; 
    } 
    @Override 
    public void destroyItem(View container, int position, Object object) { 
      if (position < views.size()) 
        ((ViewPager) container).removeView(views.get(position)); 
    } 
    @Override 
    public int getItemPosition(Object object) { 
      return views.indexOf(object); 
    } 
    @Override 
    public Object instantiateItem(View container, int position) { 
      if (position < views.size()) { 
        final ImageView imageView = views.get(position); 
        ((ViewPager) container).addView(imageView); 
        return views.get(position); 
      } 
      return null; 
    } 
  } 
} 

activity_main:


<RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  tools:context=".MainActivity" > 
  <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="150dp" 
    android:layout_marginBottom="5dp" 
    android:orientation="vertical" > 
    <android.support.v4.view.ViewPager 
      android:id="@+id/view_pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center" > 
    </android.support.v4.view.ViewPager> 
    <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:background="@drawable/focus_bg" 
      > 
      <TextView 
        android:id="@+id/NewsTitle" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="我校交换生演讲比赛夺冠 美国华盛本大学万里发来贺电" 
        android:paddingTop="10dp" 
        android:paddingBottom="8dp" 
        android:paddingLeft="10dp" 
        android:paddingRight="100dp" 
        android:textSize="15sp" 
        android:textColor="#fff"/> 
    <LinearLayout 
      android:id="@+id/dotgroup" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentRight="true" 
      android:paddingTop="23Dp" 
      android:paddingRight="10dp" 
      android:gravity="center" 
      android:layout_marginBottom="15dp" 
      android:orientation="horizontal" > 
    </LinearLayout> 
  </RelativeLayout> 
  </RelativeLayout> 
</RelativeLayout>

 以上就是关于Android实现图片文字轮播特效讲解,希望对大家的学习有所帮助。

您可能感兴趣的文章:Android实现图片轮播效果的两种方法Android实现图片轮播效果Android实现Banner界面广告图片循环轮播(包括实现手动滑动循环)Android 使用ViewPager自动滚动循环轮播效果Android使用ViewPager加载图片和轮播视频Android实现图片自动轮播并且支持手势左右无限滑动Android自动播放Banner图片轮播效果Android实现广告图片轮播效果Android ViewPager实现图片轮播效果ViewFlipper实现文字轮播效果


--结束END--

本文标题: Android实现图片文字轮播特效

本文链接: https://www.lsjlt.com/news/25952.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • js如何实现图片轮播特效
    这篇文章将为大家详细讲解有关js如何实现图片轮播特效,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看一眼效果图:代码:<html> <head>...
    99+
    2024-04-02
  • jQuery如何实现文字轮播特效
    这篇文章主要为大家展示了“jQuery如何实现文字轮播特效”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“jQuery如何实现文字轮播特效”这篇文章吧。项目背景:...
    99+
    2024-04-02
  • Android实现轮播图效果
    本文实例为大家分享了Android实现轮播图效果的具体代码,供大家参考,具体内容如下 1.代码放在LinearLayout中, <com.jude.rollviewpage...
    99+
    2024-04-02
  • 怎么利用纯CSS实现文字轮播与图片轮播
    本文小编为大家详细介绍“怎么利用纯CSS实现文字轮播与图片轮播”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么利用纯CSS实现文字轮播与图片轮播”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起...
    99+
    2024-04-02
  • Android实现视图轮播效果
    最近接手了一个需求,要求实现,叮咚买菜。 秒杀位置的轮播 拆解 通过观察发现其实还是挺简单,大致分为 1、商品图片的上下轮播 2、价格布局渐隐渐现 在android上实现布局轮播,...
    99+
    2024-04-02
  • css3怎么实现图片的自动轮播特效
    这篇文章主要介绍css3怎么实现图片的自动轮播特效,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!     使用css3实现轮播特效的主体思想   &...
    99+
    2024-04-02
  • 使用JavaScript实现轮播图特效
    本文实例为大家分享了JavaScript实现轮播图特效的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <hea...
    99+
    2024-04-02
  • jQuery怎么实现图文轮播切换特效
    今天小编给大家分享一下jQuery怎么实现图文轮播切换特效的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起...
    99+
    2024-04-02
  • Android基于AdapterViewFlipper实现的图片/文字轮播动画控件
    目录1. 问题/坑点 1.1 item宽高不生效问题 2. 常用方法 3. 文字/图片 轮播 Demo3.1 文字轮播:TextFlipperAdapter3.2 图片轮播:ImgF...
    99+
    2024-04-02
  • 使用微信小程序实现图片轮播特效
    使用微信小程序实现图片轮播特效引言:随着智能手机的普及,微信成为了我们每天使用最频繁的app之一。微信小程序作为微信生态系统中的一部分,提供了一种快速开发和发布应用程序的方式。图片轮播特效不仅可以为应用程序增添动感和美观,还可以提升用户体验...
    99+
    2023-11-21
    图片轮播 微信小程序 特效
  • android如何实现banner轮播图无限轮播效果
    小编给大家分享一下android如何实现banner轮播图无限轮播效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下效果展示第一步(权限配置)<uses-permission android:n...
    99+
    2023-05-30
    android banner
  • Android使用Recyclerview实现图片轮播效果的方法
    这篇文章将为大家详细讲解有关Android使用Recyclerview实现图片轮播效果的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图:思路:准备m张图片使用Recyclerview实现,返回无...
    99+
    2023-05-30
    android recyclerview 滚动效果
  • JavaScript实现首页图片轮播图效果
    目录一、轮番图二、源码展示设置body样式设置实现轮番一、轮番图 效果展示: 轮播图是指在一个模块或者窗口,通过鼠标点击或手指滑动后,可以看到多张图片。这些图片统称为轮播图,这个模...
    99+
    2024-04-02
  • javascript实现图片轮播简单效果
    本文实例为大家分享了javascript实现图片轮播简单效果的具体代码,供大家参考,具体内容如下 这里是css样式  * {      margin: 0;  padding...
    99+
    2024-04-02
  • js+css实现卡片轮播图效果
    本文实例为大家分享了js+css实现卡片轮播图效果的具体代码,供大家参考,具体内容如下 实现点击的时候切换卡片,自动轮播,鼠标移入暂停,移出继续轮播,有动画事件效果就是这样 下面是...
    99+
    2024-04-02
  • JS实现简单图片轮播效果
    本文实例为大家分享了JS实现简单图片轮播效果的具体代码,供大家参考,具体内容如下 实现效果 左右按钮可点击左右移动显示图片进行无缝滚动 下面的小圆圈点击可跳到对应...
    99+
    2024-04-02
  • 使用jQuery实现图片轮播效果
    jQuery是对JavaScript的简化,语法没有太大区别,比较JavaScript更加容易理解,代码量更少。 用jQuery实现图片轮播需要有以下步骤: ​ 1.对图片区域获取,...
    99+
    2024-04-02
  • js实现图片轮播切换效果
    最近在b站上学习的时候,学到了一个用原生js实现图片轮播切换效果的实战,码下来收藏 上图是这个小实战的效果图,整个小实战所实现的功能是图片自动轮播切换、点击上下键图片切换上下图片、...
    99+
    2024-04-02
  • RollViewPager如何实现图片轮播效果
    这篇文章将为大家详细讲解有关RollViewPager如何实现图片轮播效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。RollViewPager是一个自动轮播的Viewpager,支持无限循环。 触摸时...
    99+
    2023-05-30
    rollviewpager
  • jquery实现图片自动轮播效果
    本文实例为大家分享了jquery实现图片自动轮播效果的具体代码,供大家参考,具体内容如下 HTML代码如下: <div id="container">         ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作