欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼

 更新時(shí)間:2020年07月25日 15:30:36   作者:feng海濤  
這篇文章主要介紹了Android實(shí)現(xiàn)文字滾動(dòng)播放效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

在開發(fā)時(shí),我們會(huì)遇到文字過長(zhǎng),TextView不能完全展示,但又不想文字換行展示,這樣有時(shí)會(huì)影響美觀。這時(shí)我們就需要文字滾動(dòng)播放,讓用戶可以看到所有的文字。

話不多說,直接上代碼:

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;

public class MarqueTextView extends TextView {
 public MarqueTextView(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
 }
 public MarqueTextView(Context context, AttributeSet attrs) {
 super(context, attrs);
 }
 public MarqueTextView(Context context) {
 super(context);
 }
 @Override
 public boolean isFocused() {
 //true表示獲取焦點(diǎn)
 return true;
 }
}

使用方法:

<com.xxx.MarqueTextView
 android:singleLine="true"
 android:marqueeRepeatLimit="marquee_forever"
 android:ellipsize="marquee"/>

ps:下面看下android 橫向滾動(dòng)文字的實(shí)現(xiàn)

android 橫向滾動(dòng)文字的實(shí)現(xiàn)

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.Display;
import android.view.WindowManager;
import android.widget.TextView;

public class MarqueeTextView extends TextView {
 /**
  * 文字長(zhǎng)度
  */
 private float textLength = 0f;
 /**
  * 滾動(dòng)條長(zhǎng)度
  */
 private float viewWidth = 0f;
 /**
  * 文本x軸 的坐標(biāo)
  */
 private float tx = 0f;
 /**
  * 文本Y軸的坐標(biāo)
  */
 private float ty = 0f;
 /**
  * 文本當(dāng)前長(zhǎng)度
  */
 private float temp_tx1 = 0.0f;
 /**
  * 文本當(dāng)前變換的長(zhǎng)度
  */
 private float temp_tx2 = 0x0f;
 /**
  * 文本滾動(dòng)開關(guān)
  */
 private boolean isStarting = false;
 /**
  * 畫筆對(duì)象
  */
 private Paint paint = null;
 /**
  * 顯示的文字
  */
 private String text = "";
 /**
  * 文本滾動(dòng)速度
  **/
 private float sudu;

 public MarqueeTextView(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

 /**
  * 初始化自動(dòng)滾動(dòng)條,每次改變文字內(nèi)容時(shí),都需要重新初始化一次
  *
  * @param windowManager 獲取屏幕
  * @param text   顯示的內(nèi)容
  * @param su   文字滾動(dòng)的速度
  */
 public void initScrollTextView(WindowManager windowManager, String text, float su) {
  // 得到畫筆,獲取父類的textPaint
  paint = this.getPaint();
  // 得到文字
  this.text = text;
  this.sudu = su;
  textLength = paint.measureText(text);// 獲得當(dāng)前文本字符串長(zhǎng)度
  viewWidth = this.getWidth();// 獲取寬度return mRight - mLeft;
  if (viewWidth == 0) {
   // 獲取當(dāng)前屏幕的屬性
   Display display = windowManager.getDefaultDisplay();
   viewWidth = display.getWidth();// 獲取屏幕寬度 viewWidth 是滾動(dòng)的開始位置,需要修改的
   // 可再此入手
  }
  tx = textLength;
  temp_tx1 = viewWidth + textLength;
  temp_tx2 = viewWidth + textLength * 2;// 自己定義,文字變化多少
  // // 文字的大小+距頂部的距離
  ty = this.getTextSize() + this.getPaddingTop();
 }

 /**
  * 開始滾動(dòng)
  */
 public void starScroll() {
  // 開始滾動(dòng)
  isStarting = true;
  this.invalidate();// 刷新屏幕
 }

 /**
  * 停止方法,停止?jié)L動(dòng)
  */
 public void stopScroll() {
  // 停止?jié)L動(dòng)
  isStarting = false;
  this.invalidate();// 刷新屏幕
 }

 /**
  * 重寫onDraw方法
  */
 @Override
 protected void onDraw(Canvas canvas) {
  if (isStarting) {
   // A-Alpha透明度/R-Read紅色/g-Green綠色/b-Blue藍(lán)色
   //paint.setARGB(255, 200, 200, 200);
   canvas.drawText(text, temp_tx1 - tx, ty, paint);
   tx += sudu;
   // 當(dāng)文字滾動(dòng)到屏幕的最左邊
   if (tx > temp_tx2) {
    // 把文字設(shè)置到最右邊開始
    tx = textLength;
   }
   this.invalidate();// 刷新屏幕
  }
  super.onDraw(canvas);
 }
}

使用:

MarqueeTextView marqueeTextView = contentView.findViewById(R.id.five_text__view);
marqueeTextView.initScrollTextView(getWindowManager(), "滾動(dòng)文字", 1);
marqueeTextView.setText("");
marqueeTextView.starScroll();

到此這篇關(guān)于Android實(shí)現(xiàn)文字滾動(dòng)播放效果的代碼的文章就介紹到這了,更多相關(guān)Android實(shí)現(xiàn)文字滾動(dòng)播放 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論