android 自动换行

package com.dcs.tools;

import java.util.Vector;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.view.KeyEvent;

public class TextUtil {

    privatefloat  mTextPosx = 0;// x坐标
    privatefloat  mTextPosy = 0;// y坐标
    privatefloat mTextWidth = 0;// 绘制宽度
    privatefloat mTextHeight = 0;// 绘制高度
    private intmFontHeight = 0;// 绘制字体高度
    private intmPageLineNum = 0;// 每一页显示的行数
    private intmCanvasBGColor = 0;// 背景颜色
    private intmFontColor = 0;// 字体颜色
    private intmAlpha = 0;// Alpha值
    private intmRealLine = 0;// 字符串真实的行数
    private intmCurrentLine = 0;// 当前行
    private intmTextSize = 0;// 字体大小
    privateString mStrText = "";
    privateVector<String> mString = null;
    privatePaint mPaint = null;

    publicTextUtil(String StrText, float  x,float  y, float w, float h, int bgcolor,
           int textcolor, int alpha, int textsize) {
       mPaint = new Paint();
       mString = new Vector<String>();
       this.mStrText = StrText;
       this.mTextPosx = x;
       this.mTextPosy = y;
       this.mTextWidth = w;
       this.mTextHeight = h;
       this.mCanvasBGColor = bgcolor;
       this.mFontColor = textcolor;
       this.mAlpha = alpha;
       this.mTextSize = textsize;
    }

    publicvoid initText() {
       mString.clear();// 清空Vector
       // 对画笔属性的设置
  mPaint.setARGB(this.mAlpha,Color.red(this.mFontColor), Color
    .green(this.mFontColor),Color.blue(this.mFontColor));
       mPaint.setTextSize(this.mTextSize);
//       mPaint.setColor(Color.BLUE);
       mPaint.setAntiAlias(true);
       
       this.getTextIfon();
    }

   
    public voidgetTextIfon() {
       char ch;
       int w = 0;
       int istart = 0;
       FontMetrics fm = mPaint.getFontMetrics();// 得到系统默认字体属性
       mFontHeight = (int) (Math.ceil(fm.descent - fm.top) + 2);//获得字体高度
       mPageLineNum = (int) (mTextHeight / mFontHeight);// 获得行数
       
       int count = this.mStrText.length();
       for (int i = 0; i < count; i++) {
           ch = this.mStrText.charAt(i);
           float[] widths = new float[1];
           String str = String.valueOf(ch);
           mPaint.getTextWidths(str, widths);
           if (ch == '\n') {
               mRealLine++;// 真实的行数加一
               mString.addElement(this.mStrText.substring(istart, i));
               istart = i + 1;
               w = 0;
           } else {
               w += (int) Math.ceil(widths[0]);
               if (w > this.mTextWidth) {
                   mRealLine++;// 真实的行数加一
                   mString.addElement(this.mStrText.substring(istart, i));
                   istart = i;
                   i--;
                   w = 0;
               } else {
                   if (i == count - 1) {
                       mRealLine++;// 真实的行数加一
                       mString.addElement(this.mStrText.substring(istart,
                               count));
                   }
               }
           }
       }
    }

   
    public voiddrawText(Canvas canvas) {
       for (int i = this.mCurrentLine, j = 0; i <this.mRealLine; i++, j++) {
           if (j > this.mPageLineNum) {
               break;
           }
           canvas.drawText((String) (mString.elementAt(i)),this.mTextPosx,
                   this.mTextPosy + this.mFontHeight * j, mPaint);
       }
    }

   
    publicboolean keyDown(int keyCode, KeyEvent event) {
       if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
           if (this.mCurrentLine > 0) {
               this.mCurrentLine--;
           }
       } else if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
           if ((this.mCurrentLine + this.mPageLineNum) <(this.mRealLine - 1)) {
               this.mCurrentLine++;
           }
       }
       return false;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值