现在制作的很多APP应用程序都有字幕滚动这个效果,这个效果看起来很简单,但是实现起来却不是我们想象的那么容易,今天爱站技术频道小编分享给大家Android实现字幕滚动的方法。

主要实现代码如下:

package com.tony.autoscroll;

import android.content.Context;

import android.os.Handler;

import android.util.AttributeSet;

import android.util.Log;

import android.view.MotionEvent;

import android.widget.ScrollView;

/**

* @author Tony

*/

public class AutoScrollView extends ScrollView {

private final Handler handler = new Handler();

private long duration = 50;

private boolean isScrolled = false;

private int currentIndex = 0;

private long period = 1000;

private int currentY = -1;

private double x;

private double y;

private int type = -1;

/**

* @param context

*/

public AutoScrollView(Context context) {

this(context, null);

}

/**

* @param context

* @param attrs

*/

public AutoScrollView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

/**

* @param context

* @param attrs

* @param defStyle

*/

public AutoScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public boolean onTouchEvent(MotionEvent event) {

int Action = event.getAction();

switch (Action) {

case MotionEvent.ACTION_DOWN:

x=event.getX();

y=event.getY();

if (type == 0) {

setScrolled(false);

}

break;

case MotionEvent.ACTION_MOVE:

double moveY = event.getY() - y;

double moveX = event.getX() - x;

Log.d("test", "moveY = " + moveY + " moveX = " + moveX );

if ((moveY>20||moveY -50) && getParent() != null) {

getParent().requestDisallowInterceptTouchEvent(true);

}

break;

case MotionEvent.ACTION_UP:

if (type == 0) {

currentIndex = getScrollY();

setScrolled(true);

}

break;

default:

break;

}

return super.onTouchEvent(event);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent p_event)

{

Log.d("test", "onInterceptTouchEvent");

return true;

}

/**

* 判断当前是否为滚动状态

* @return the isScrolled

*/

public boolean isScrolled() {

return isScrolled;

}

/**

* 开启或者关闭自动滚动功能

* @param isScrolled

* true为开启,false为关闭

*/

public void setScrolled(boolean isScrolled) {

this.isScrolled = isScrolled;

autoScroll();

}

/**

* 获取当前滚动到结尾时的停顿时间,单位:毫秒

* @return the period

*/

public long getPeriod() {

return period;

}

/**

* 设置当前滚动到结尾时的停顿时间,单位:毫秒

* @param period

*the period to set

*/

public void setPeriod(long period) {

this.period = period;

}

/**

* 获取当前的滚动速度,单位:毫秒,值越小,速度越快。

* @return the speed

*/

public long getSpeed() {

return duration;

}

/**

* 设置当前的滚动速度,单位:毫秒,值越小,速度越快。

* @param speed

*the duration to set

*/

public void setSpeed(long speed) {

this.duration = speed;

}

public void setType(int type){

this.type = type;

}

private void autoScroll() {

handler.postDelayed(new Runnable() {

@Override

public void run() {

boolean flag = isScrolled;

if (flag) {

//Log.d("test", "currentY = " + currentY + " getScrollY() = "+ getScrollY() );

if (currentY == getScrollY()) {

try {

Thread.sleep(period);

} catch (InterruptedException e) {

e.printStackTrace();

}

currentIndex = 0;

scrollTo(0, 0);

handler.postDelayed(this, period);

} else {

currentY = getScrollY();

handler.postDelayed(this, duration);

currentIndex++;

scrollTo(0, currentIndex * 1);

}

} else {

//currentIndex = 0;

//scrollTo(0, 0);

}

}

}, duration);

}

}

本文是爱站技术频道小编为大家带来的Android实现字幕滚动的方法,大家学会了吗?爱站技术频道将继续为大家搜集更多是知识,请大家持续关注我们的更新。

android实现字体滚动,Android实现字幕滚动的方法相关推荐

  1. Mini字幕滚动器/迷你字幕滚动器(企业版/试用版)v2.2 最新版

    软件介绍: 1.支持导入导出播放字幕内容. 2.支持速度/宽度/高度/长度调整. 3.字体颜色支持3种颜色的实时循环. 4.显示框支持随时修改背景颜色. 5.显示框支持前端/普通/强制前端显示方式. ...

  2. android 镂空字体下载,Android——自定义镂空掩饰控件

    刚学完ViewDragHelper和PorterDuffXferMode的我,突然想做一个这样效果的自定义控件:点击ListView的列表项,通过ViewDragHelper用动画方式上下各弹出一个控 ...

  3. Mini字幕滚动器/迷你字幕滚动器(单机版/试用版)v1.8 最新版

    首款模拟电视字幕播放的小工具,适合企业.学校.超市.酒店.发廊,用于电脑上循环播放通知.折扣优惠信息等内容. 使用本软件过程中,杀毒软件可能存在误报现象,请放心使用. 新版本支持更多个性字体, 以下是 ...

  4. android开发字体样式,Android开发中修改程序字体的样式

    Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用an ...

  5. android roboto字体下载,Android字体设置及Roboto字体使用方法

    本文实例讲述了Android字体设置及Roboto字体使用方法.分享给大家供大家参考.具体分析如下: 一.自定义字体 1.android Typeface使用TTF字体文件设置字体 我们可以在程序中放 ...

  6. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

  7. android 自定义字体 ttf,Android APP支持自定义字体

    情景:需要为整个应用替换自定义字体. Android对于文字的字体设置主要是通过以下两个对象 FontFamily.Typeface 在XML文件中设置单个字体: android:id="@ ...

  8. android程序字体大小,Android如何动态调整应用字体大小详解

    前言 为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求. Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想 ...

  9. android程序字体大小,Android 动态调整应用字体大小

    Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信.本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置 字体大小 ...

  10. android l字体,关于 Android 默认字体以及对比微软雅黑字体

    用了一段时间 Android 手机之后,不禁对系统中的字体产生了兴趣.因为看起来,Android 中使用的中文字体和 Windows 中使用的"微软雅黑"很像,我一度怀疑 Andr ...

最新文章

  1. MAC配置DNS服务器
  2. 用python做预测模型的好处_如何用Python在10分钟内建立一个预测模型
  3. IoT“永恒之蓝”来袭:路由器等智能硬件成重灾区
  4. 模拟ctrl+alt+delete三键
  5. 6s电路图纸 iphone_(分享)iphone6s原理图、点位图(维修必备)
  6. linux 脚本做成服务,Shell脚本注册到Linux系统服务实例
  7. 只能选择GridView中的一个CheckBox(单选CheckBox)
  8. iOS 15 H264硬编码码率变小,图像模糊
  9. win10哪个版本打游戏好?win10游戏性能分析
  10. kettle使用httpClient获取ES索引数据
  11. 计算机基础及photoshop的应用,计算机基础及Photoshop应用
  12. [Android]自定义锁屏并屏蔽按键
  13. 直播系统解决方案:直播平台如何开发搭建
  14. mysql中char是什么意思_mysql中char与varchar的区别
  15. 开关电源(Switch Regulator)---Buck
  16. 有没有可操作的虚拟资源赚钱项目
  17. 英语语法:定语从句讲解
  18. Linux安装expect
  19. 【一生一芯】Chap.1 “一生一芯”实验环境配置| VMware安装Ubuntu20.04 | PA工程配置 | 解决llvm版本问题
  20. 路由器说服务器无响应,路由器设置说服务器没响应

热门文章

  1. 无监督端到端检索式问答系统方案实践
  2. 『优势特征知识蒸馏』在淘宝推荐中的应用
  3. FKGE:合格的知识图谱嵌入已经学会保护隐私啦!
  4. Algorithm:多维数组和矩阵
  5. 机器学习中的范数规则化之核范数及其应用
  6. git bash linux 命令,Git Bash的妙用 - 使用Linux命令
  7. 桌面版docker操作_10分钟快速掌握Docker必备基础知识
  8. 推荐一款好用的消息推送服务WxPusher
  9. 在IDEA中,项目中出现红色波浪线解决办法
  10. Guava的介绍与使用示例