Android跑马灯几种css3实现跑马灯

&>&Android跑马灯几种实现
Android跑马灯几种实现
上传大小:1.32MB
Android跑马灯的各种实现,看我博客,主要让大家对自定义View有一个深刻认识
综合评分:5
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有1条
谢谢楼主分享
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
Android跑马灯几种实现
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
Android跑马灯几种实现博客分类:
1、机顶盒应用中经常用到跑马灯效果,而自己绘制跑马灯效果的关键在于步长和刷新频率的控制,一般情况下,刷新频率不要大于16ms,因为16ms是保证不掉帧的关键时间点,所以就不会出现卡顿的现象,具体实现代码如下:
package com.example.
import android.content.C
import android.graphics.C
import android.graphics.C
import android.graphics.P
import android.graphics.RectF;
import android.os.H
import android.text.TextP
import android.text.TextU
import android.util.AttributeS
import android.view.V
public class CustomTextView extends View {
* 界面刷新时间(ms)
public static final int INVALIDATE_TIME = 15;
* 每次移动的像素点(px)
public static final int INVALIDATE_STEP = 4;
* 一次移动完成后等待的时间(ms)
public static final int WAIT_TIME = 1500;
* 滚动文字前后的间隔
private String space = "
private String drawingText = "";
private TextP
public boolean exitF
private float textW
private String _mT
private int posX = 0;
private float posY;
private RectF
private Handler mHandler = new Handler();
public CustomTextView(Context context) {
this(context, null);
public CustomTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView();
private void initView() {
paint = new TextPaint();
paint.setAntiAlias(true);
paint.setColor(Color.WHITE);
paint.setTextSize(30F);
rf = new RectF(0, 0, 0, 0);
public void setText(String text) {
this._mText =
this.drawingText = _mT
layoutView();
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
layoutView();
private void layoutView() {
width = getWidth();
rf.right =
rf.bottom = getHeight();
textWidth = paint.measureText(_mText, 0, _mText.length());
posY = getTextDrawingBaseline(paint, rf);
protected void onDraw(Canvas canvas) {
if (getVisibility() != View.VISIBLE || TextUtils.isEmpty(drawingText)) {
canvas.save();
canvas.drawText(drawingText, 0, drawingText.length(), posX, posY, paint);
canvas.restore();
private Runnable moveRun = new Runnable() {
public void run() {
if(width &= textWidth){
drawingText = _mText + space + _mT
posX -= INVALIDATE_STEP;
if(posX &= -1 * INVALIDATE_STEP / 2 && posX &= INVALIDATE_STEP / 2){
mHandler.postDelayed(this, WAIT_TIME);
invalidate();
if (posX & -1 * textWidth - paint.measureText(space, 0, space.length())) {
posX = INVALIDATE_STEP;
invalidate();
if(!exitFlag){
mHandler.postDelayed(this, INVALIDATE_TIME);
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopMove();
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
layoutView();
startMove();
private void stopMove() {
exitFlag =
mHandler.removeCallbacksAndMessages(null);
public void startMove() {
exitFlag =
mHandler.post(moveRun);
* 获取绘制文字的baseline
* @param paint
* @param targetRect
public static float getTextDrawingBaseline(Paint paint, RectF targetRect) {
if (paint == null || targetRect == null) {
Paint.FontMetrics fontMetric = paint.getFontMetrics();
return targetRect.top + (targetRect.height() - fontMetric.bottom + fontMetric.top) / 2.0f - fontMetric.
调用代码:
package com.example.
import android.app.A
import android.graphics.C
import android.os.B
import android.widget.RelativeL
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout rl = new RelativeLayout(MainActivity.this);
setContentView(rl);
CustomTextView view = new CustomTextView(MainActivity.this);
view.setBackgroundColor(Color.GRAY);
view.setText("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
rl.addView(view, 300, 100);
大家可以根据自己的需要去调整步长,建议不要修改刷新间隔时间。
附件是Demo工程,可以在上面调整出需要的速度
下载次数: 10
jingbin4679
浏览: 889 次
来自: 成都
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
android 跑马灯效果的基本实现以及自定义实现一个界面多个跑
摘要:前言:我相信很多人都在实现过android的跑马灯效果,肯定也有很多人说一个界面不能实现多个跑马灯效果,其实是可以实现的,今天我们就带你实现一下。跑马灯最简单的代码实现如下:android:layout_width=&100px&android:layout_height=&wrap_content&android:ellipsize=&marquee&android:focusable=&true&quo
我相信很多人都在实现过android的跑马灯效果,肯定也有很多人说一个界面不能实现多个跑马灯效果,其实是可以实现的,今天我们就带你实现一下。跑马灯最简单的代码实现如下:
android:layout_width=&100px&
android:layout_height=&wrap_content&
android:ellipsize=&marquee&
android:focusable=&true&
android:singleLine=&true&
android:marqueeRepeatLimit=&marquee_forever&
android:focusableInTouchMode=&true&
android:scrollHorizontally=&true&
android:text=&马灯效果&&
ellipsize=”marquee”:跑马灯效果
marqueeRepeatLimit:循环的次数
singleLine:如果不设置成单行,跑马灯也就没有了意义
至于为什么focusable设置为true,那是因为只有获得了焦点才能出现跑马灯的效果
更多的含义请参跑马灯效果的总结
下面我们就说说本文的重点,如果实现一个界面多个跑马灯效果
因为系统是通过判断当前TextView是否获得焦点来判断是否显示跑马灯效果的,但是界面上肯定只能有一个控件可以获得焦点,那么我们怎么让系统以为每个想要实现跑马灯效果的TextView都获得了焦点呢?查看源码我们就可以知道,系统是通过View 的一个叫做isFocused()方法来获得这个View是否获得焦点的,知道了这些,问题就很好解决了,我们可以通过自定义View,重写isFocused()方法来让系统误以为获得了焦点,从而显示跑马灯的效果,代码如下:
import android.content.C
import android.text.TextU
import android.util.AttributeS
import android.widget.TextV
public class MarqueeTextView extends TextView {
public MarqueeTextView(Context context) {
this(context, null);
public MarqueeTextView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
private void init() {
setEllipsize(TextUtils.TruncateAt.MARQUEE);
setMarqueeRepeatLimit(-1);
setSingleLine();
public boolean isFocused() {
用发也比以前简单了很多,不用设置
android:focusable
android:ellipsize=”marquee” android:focusable=”true” android:singleLine=”true”
android:marqueeRepeatLimit=”marquee_forever” android:focusableInTouchMode=”true” 等乱七八糟的东西。。。。。 这样就完美的解决了我们的问题,是不是很简单?
</textview
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
android 跑马灯效果的基本实现以及自定义实现一个界面多个跑相关信息,包括
的信息,所有android 跑马灯效果的基本实现以及自定义实现一个界面多个跑相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
Internationalandroid怎样实现跑马灯效果_百度知道
android怎样实现跑马灯效果
我有更好的答案
  Android自带的跑马灯效果不太好控制,不能控制速度,不能即时停止和启动,而且还受焦点的影响蛋疼不已。由于项目需求需要用的可控制性高的跑马灯效果,所以自己写了一个自定义的TextViewandroid:ellipsize=&marquee& android:singleLine=&true& 这两个属性也要加上public class MarqueeText extends TextView implements Runnable {private int currentScrollX;// 当前滚动的位置private boolean isStop =private int textWprivate boolean isMeasure =public MarqueeText(Context context) {super(context);// TODO Auto-generated constructor stub}public MarqueeText(Context context, AttributeSet attrs) {super(context, attrs);}public MarqueeText(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);if (!isMeasure) {// 文字宽度只需获取一次就可以了getTextWidth();isMeasure =}}/*** 获取文字宽度*/private void getTextWidth() {Paint paint = this.getPaint();String str = this.getText().toString();textWidth = (int) paint.measureText(str);}@Overridepublic void run() {currentScrollX -= 2;// 滚动速度scrollTo(currentScrollX, 0);if (isStop) {}if (getScrollX() &= -(this.getWidth())) {scrollTo(textWidth, 0);currentScrollX = textW//}postDelayed(this, 5);}// 开始滚动public void startScroll() {isStop =this.removeCallbacks(this);post(this);}// 停止滚动public void stopScroll() {isStop =}// 从头开始滚动public void startFor0() {currentScrollX = 0;startScroll();}}布局文件:&LinearLayout xmlns:android=&&xmlns:tools=&&android:layout_width=&fill_parent&android:layout_height=&fill_parent&android:orientation=&vertical& &&Buttonandroid:id=&@+id/start&android:layout_width=&wrap_content&android:layout_height=&wrap_content&android:onClick=&start&android:text=&走起& /&&Button android:id=&@+id/stop& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:onClick=&stop& android:text=&停止& /& &Button android:id=&@+id/startfor0& android:layout_width=&wrap_content& android:layout_height=&wrap_content& android:onClick=&startFor0& android:text=&从头开始& /& &simtice.demo.marqueetext.MarqueeText android:id=&@+id/test& android:layout_width=&fill_parent& android:layout_height=&wrap_content& android:background=&#339320& android:ellipsize=&marquee& android:singleLine=&true& android:text=&这才是真正的文字跑马灯效果这才是真正的字跑马灯效果这才是真正的& android:textColor=&#000000& android:textSize=&20dp& & &/simtice.demo.marqueetext.MarqueeText&&/LinearLayout&MainActivitypublic class MainActivity extends Activity { private MarqueeT @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); test = (MarqueeText) this.findViewById(R.id.test); } public void start(View v) { test.startScroll(); } public void stop(View v) { test.stopScroll(); } public void startFor0(View v){ test.startFor0(); }}
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。android开发怎么实现跑马灯怎么多个一起_百度知道
android开发怎么实现跑马灯怎么多个一起
我有更好的答案
android:ellipsize=&marquee&android:marqueeRepeatLimit=&marquee_forever&android:singleLine=&true&textview添上上面的属性就可以了
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 jquery实现文字跑马灯 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信