java.lang.IndexOutOfBoundsException and drawPosText
package com.example.canvastest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by 700 on 2018/7/31.
*/
public class DrawText_DrawPosText extends View{
private Paint mTextPaint;
private float[] offset = new float[10];
public DrawText_DrawPosText(Context context, AttributeSet attrs,
int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public DrawText_DrawPosText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DrawText_DrawPosText(Context context) {
super(context);
}
private void initView(){
for(int i = 0; i<10; i+=2){
offset[i] = 100;
offset[i+1] = 250+150*i/2;
}
mTextPaint = new Paint();
mTextPaint.setColor(getResources().getColor(
android.R.color.holo_blue_light
));
mTextPaint.setTextSize(20);//设置文字大小
// mTextPaint.setTextAlign(Paint.Align.CENTER);//设置居中
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
initView();
canvas.drawText("hehehehehedadadadadadadada",100,100,mTextPaint);
canvas.drawPosText("hehehehehedadadadadadadada",offset,mTextPaint);
}
}
郁闷。。报错的原因是数组超范围了。。
还以为是for语句写错了,看了半天。。。没错啊。。。
后来聚焦在了drawPosText()上面,觉得不太对劲,看了下源码,额。。。。。。,
意思是干嘛呢,drawPosText()不是第一个参数是字符串嘛,drawPosText()这个方法就是把这个字符串拆成一个一个字符,按顺序对应好第二个参数的位置放好。。。,也就是说我第二个参数offset这个数组长度是10,即包含着五个xy坐标对,只能描述五个位置,所以第一个参数只能是一个五字符的字符串,不然就跟数组不匹配,便会报错了。。。
喏,第一个参数改成是一个五字符的字符串:
也便成功运行了:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
利用最小二乘法拟合任意次函数曲线(C#)
原文: 利用最小二乘法拟合任意次函数曲线(C#) ///<summary> ///用最小二乘法拟合二元多次曲线 ///</summary> ///<param name="arrX">已知点的x坐标集合</param> ///<param name="arrY">已知点的y坐标集合</param> ///<param name="length">已知点的个数</param> ///<param name="dimension">方程的最高次数</param> public static double[] MultiLine(double[] arrX, double[] arrY, int length, int dimension)//二元多次线性方程拟合曲线 { int n = dimension + 1; //dimension次方程需要求 dimension+1个 系数 double[,] Guass=new double[n,n+1];...
-
下一篇
探秘varian:优雅的发布部署程序
上一篇文章《记一次诡异的故障排查经历》中有介绍到我们的部署程序varian,文章发布后有小伙伴对varian很感兴趣,今天就简单的介绍一下我们的varian,揭开她神秘的面纱~ 什么是varian varian是我们基于Python3编写的一套部署程序,处在整个部署系统的中心,与CMDB、Jenkins、SVN/Git、镜像仓库Harbor、Kubernetes API、通知系统等都有交互,负责将源代码经过一系列的处理后打包成Docker镜像,并发布到各个环境,然后通知相关人员。简化后的varian架构如下: 项目环境介绍 项目数量:50+ 开发语言:php、java、nodejs 代码版本管理工具:svn、git 编译方式:maven、grunt、yarn 通知方式:email、sms、im varian能解决我们哪些问题 说到解决的问题,要先聊一下部署系统经历的几个迭代版本: 最早项目比较少,所用架构及技术也比较单一,每个项目都单独维护了一个shell脚本做部署,脚本里配置了项目的所有信息,包含服务器列表、代码路径等项目特有信息和通知类型等公共信息,各项目脚本之间互不干涉。这样做的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- MySQL数据库在高并发下的优化方案
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境