草庐IT

android - 替代 Android 中的 ReplacementSpan

我有一个应用程序可以分页大文本并为每个单词或句子设置多个跨度。我正在使用ReplacementSpan为每个单词绘制背景。我不能使用BackgroundSpan,因为它太简单而且无法让我控制Canvas。由于ReplacementSpan扩展了影响文本布局的MetricAffectingSpan,因此完全破坏了我的分页。我正在使用StaticLayout来计算每个页面的文本,而StaticLayout不允许跨越,因此它可以先验地计算跨越大小的影响。ReplacementSpan有替代品吗?如何在不影响文本本身的大小和布局的情况下绘制我想要的背景?这是我的replacementspan的

android - 在android上的地理点之间绘制平滑线

我在地理点之间画了线。它成功绘制。当我们看到map时,画线看起来像下一个画线的像素化。如何合并线?我的代码在这里,@Overridepublicvoiddraw(Canvascanvas,MapViewmapview,booleanshadow){super.draw(canvas,mapview,shadow);if(!routeIsActive)return;mapview.getProjection().toPixels(locpoint,pp);//ConvertsGeoPointtoscreenpixelsintxoff=0;intyoff=0;intoldx=pp.x;in

android - 如何在 Android 中使用 Canvas.drawText 绘制 Spanned String

我想将SpannedString绘制到Canvas。SpannableStringspannableString=newSpannableString("HelloWorld!");ForegroundColorSpanforegroundSpan=newForegroundColorSpan(Color.RED);BackgroundColorSpanbackgroundSpan=newBackgroundColorSpan(Color.YELLOW);spannableString.setSpan(foregroundSpan,1,8,Spannable.SPAN_EXCLUSIV

android - 如何获得固定宽度的文本高度并获得适合框架的文本长度?

好吧,我已经设法将我所有的问题都放在标题中了。我需要将长文本分成列/框架并将它们布局以查看。几天来我一直在寻找解决方案,但我找不到任何示例或清晰的文档来说明如何完成我的任何任务。我已经看到一些关于StaticLayout的提及,但我不知道如何正确使用它。至于文本高度,我试过TextPaint的getTextBounds方法,但它没有宽度限制,而且看起来它只测量单行(好吧,也许我做错了什么)。也许有人有StaticLayout的例子或者它的子类用法?一切看起来“在纸上”都很简单:创建“框架”,检查其中适合多少字符,填充框架并定位它,重复直到文本结束,但我找不到任何关于如何做到这一点的信息

Android - 填充折线图下方的颜色

我正在为我们的一个应用程序构建折线图。图表中的线条部分工作正常,但现在我必须用颜色填充线条下方的区域,如下图所示。我正在使用此代码使用Canvas将线绘制到位图上。ListxCoordinates=(List)coordinates[0];ListyCoordinates=(List)coordinates[1];for(inti=0;i我需要知道的是,有没有一种方法可以轻松找到线下方的区域并将其设置为颜色,或者我是否必须计算图形的3个点之间的每个区域并用颜色填充?我不能使用现有的图表库,如AchartEngine、ChartDroid、aFreeChart等。

android - 如何在不创建新位图的情况下创建带有中心裁剪的部分圆角矩形可绘制对象?

背景我已经了解了如何从位图中创建一个圆形的可绘制对象,以及如何在其周围添加轮廓(也称为描边),here.问题我无法找到如何在不创建新位图的情况下仅对位图的某些角进行四舍五入的类似任务,而无需创建新的位图,并且仍然为中心裁剪ImageView执行此操作。我发现了什么这是我发现的,但它确实创建了一个新的位图,并且在带有center-crop的imageView中使用它时(来源here):/***Createroundedcornerbitmapfromoriginalbitmap.**@paraminputOriginalbitmap.*@paramcornerRadiusCornerra

java - 在Android中检测 'drag'的开始和结束位置,并在它们之间画一条线

我想为android制作一个简单的涂鸦应用程序,但我不知道如何从android获取一些数据!我需要:鼠标拖动前后的位置或者如果是简单的触摸如何获取触摸的位置。我应该怎么画线条?有人可以帮帮我吗? 最佳答案 您可以在View中覆盖onTouchEvent方法:@OverridepublicbooleanonTouchEvent(MotionEventevent){if(event.getAction()==MotionEvent.ACTION_DOWN){start_x=event.getX();start_y=event.getY(

android - 关于Android Paint绘图颜色

绘图View.javapublicclassDrawViewextendsViewimplementsOnTouchListener{privateCanvasmCanvas;privatePathmPath;publicPaintmPaint;ArrayListpaths=newArrayList();privateArrayListundonePaths=newArrayList();privateMaskFiltermEmboss;privateMaskFiltermBlur;privateBitmapim;publicDrawView(Contextcontext){super

android - 在 Android 中使用 Canvas.drawText 呈现清晰的文本

我正在做一个AppWidget,在它的设置中我让用户启用/禁用文本阴影。由于我无法通过RemoteViews类调用shadow方法,我正在执行动态绘制小部件及其容器的“绘制”方法。虽然绘制文本时,它变得有点模糊,不像使用TextView时那样清晰。我用于文字绘画的唯一代码是:Paintp=newPaint();p.setAntiAlias(true);p.setColor(Color.WHITE);我需要做任何其他的魔法让它变得更脆吗? 最佳答案 Paintpaint=newPaint(Paint.LINEAR_TEXT_FLAG|

android - 带有 Path.addArc 的圆形扇形剪切蒙版?

我需要创建一个扇形的剪贴蒙版。我可以使用以下方法绘制一个:paint.setColor(0x88FF0000);paint.setStyle(Style.FILL);canvas.drawArc(oval,0,30,true,paint);我想用它作为剪切路径,所以我尝试过:Pathpath=newPath();path.addArc(oval,0,30);canvas.clipPath(path,Op.REPLACE);但是addArc没有useCenter参数,所以我得到的不是一个扇区而是一个段。 最佳答案 好吧,似乎没有使用剪