标签: android-canvas

如何在 Android Jetpack Compose 中在画布上绘制单侧加厚描边?

这是我的代码;

Box(
        modifier = Modifier.fillMaxSize(),
        contentAlignment = Alignment.Center
    ){
        Canvas(
            modifier = Modifier
                .fillMaxSize(0.5f)
                .border(1.dp, Color.Red)
        ){
            drawRect(
                color =Color.Black,
                size = size,
                style = Stroke(
                    width = 100f
                )
            )
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

结果;

在此输入图像描述

我希望厚度从红线的内侧或外侧增加,而不是两侧。我怎样才能做到这一点?

android-canvas kotlin android-jetpack-compose android-jetpack-compose-canvas

3
推荐指数
1
解决办法
1055
查看次数

Jetpack Compose Canvas drawText 颜色混合?

假设我在下面编写了以下代码。

背景洋红色圆圈,顶部有默认黑色的文本。

在此输入图像描述

当文本颜色位于圆圈上方时,我想将其混合为白色。

Canvas(
    modifier = Modifier.size(256.dp),
    onDraw = {
        drawCircle(
            color = Color.Magenta,
            radius = 50f,
            center = Offset(
                x = size.width / 2,
                y = size.height  / 2),
        )
        val textSize = textMeasurer.measure(text = AnnotatedString("A"))
        drawText(
            textMeasurer = textMeasurer,
            text = "A",
            style = TextStyle(
                color = Color.Black,
                fontSize = 14.sp
            ),
            topLeft = Offset(
                x = size.width / 2 - 100f - (textSize.size.width / 2),
                y = size.height  / 2 - (textSize.size.height / 2)
            )
        )
        drawText( …
Run Code Online (Sandbox Code Playgroud)

android android-canvas android-jetpack-compose android-jetpack-compose-canvas

3
推荐指数
1
解决办法
1587
查看次数

如何在jetpack compose画布上为drawPath()设置动画

我使用 path.cubicTo() 方法画了一颗心

Canvas(modifier = Modifier.size(100.dp)) {
            val path = Path()
            path.moveTo(0f, size.height / 3)

            path.cubicTo(0f, 0f, size.width / 2, 0f, size.width / 2, size.height / 3)
            path.cubicTo(size.width / 2, 0f, size.width, 0f, size.width, size.height / 3)

            path.cubicTo(
                size.width,
                size.height * 2 / 3,
                size.width / 2,
                size.height,
                size.width / 2,
                size.height
            )
            path.cubicTo(
                0f,
                size.height * 2 / 3,
                0f,
                size.height / 2,
                0f,
                size.height / 3
            )
            drawPath(color = Color.Red, path = path, style = Stroke(5f))
        }
Run Code Online (Sandbox Code Playgroud)

我画的心 …

animation android android-canvas android-jetpack-compose android-jetpack-compose-canvas

3
推荐指数
1
解决办法
1773
查看次数

Android:在画布内滚动位图

我想在画布中创建一个包含大位图(大于屏幕)的视图.这样用户就可以Bitmap在其上滚动和绘制手指画.我正在关注FingerPaintAndroid API演示中的代码.

但我不能够产生滚动Bitmap使用Canvas.增加位图的大小似乎不起作用.

我尝试在视图中添加视图类,ScrollView但视图onDraw()没有被调用,我得到一个空白屏幕.

请帮我解决一下这个.谢谢.

android bitmap android-canvas

2
推荐指数
1
解决办法
3409
查看次数

android触摸绘制线

我有一个获取图像视图坐标的代码,我想在用户在imageview中触摸2次时绘制一条线.imageview有一个drawable的位图.更多细节这是我的代码:

public class MainActivity extends Activity implements OnTouchListener {
   ImageView tampil;
   Matrix matrix = new Matrix();
   Matrix savedMatrix = new Matrix();
   private static final String TAG = "Touch";
   static final int NONE = 0;
   static final int DRAG = 1;
   static final int ZOOM = 2;
   int mode = NONE;

   // Remember some things for zooming
   PointF start = new PointF();
   PointF mid = new PointF();
   float oldDist = 1f;
   float x1, y1, x2, y2;
   Bitmap bmp;
   int i = …
Run Code Online (Sandbox Code Playgroud)

android draw ontouchlistener touch-event android-canvas

2
推荐指数
1
解决办法
7853
查看次数

Android View inflateException

我正在尝试创建一个自定义视图 - 手指画,我遇到此错误的麻烦,我不知道如何解决它.谁能告诉我有什么问题?

logcat的:

08-04 08:34:01.171: E/AndroidRuntime(15664): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.boenka.mk/com.boenka.mk.Draw}: android.view.InflateException: Binary XML file line #9: Error inflating class com.boenka.mk.DrawPanel
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.os.Looper.loop(Looper.java:137)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at android.app.ActivityThread.main(ActivityThread.java:4424)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at java.lang.reflect.Method.invokeNative(Native Method)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at java.lang.reflect.Method.invoke(Method.java:511)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-04 08:34:01.171: E/AndroidRuntime(15664):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-04 …
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-inflate android-canvas android-view

2
推荐指数
1
解决办法
3万
查看次数

更改颜色而不影响以前绘制的任

我有以下CustomView我在我的应用程序中使用绘画:

package com.test.testing;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.widget.TextView;

public class CustomView extends TextView {
    Paint paint;
    Path path;
    float x = 0;
    float y = 0;
    private int cWhite = Color.WHITE;

    public CustomView(Context context) {
        super(context);
        paint = new Paint();
        path= new Path();
        paint.setAlpha(255);
        paint.setColor(cWhite);
        paint.setStyle(Style.STROKE);
        paint.setStrokeWidth(20);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawPath(path,paint);
        canvas.drawCircle(x, y, 10, paint);
    }

    public boolean onTouchEvent(MotionEvent event) {
        int action …
Run Code Online (Sandbox Code Playgroud)

java android android-canvas

2
推荐指数
1
解决办法
3237
查看次数

在Android Canvas上绘制一个空心圆

我正在创建一个自定义视图,用户可以在其中选择一个角度.以下是最终结果应如下所示的示例:

在此输入图像描述

我使用以下代码实现此目的:

mPaint.setColor(Color.BLACK);
canvas.drawCircle((int) (mSize.right / 2), (int) (mSize.bottom / 2),
        mWidthOutside, mPaint);

mPaint.setColor(Color.LTGRAY);
canvas.drawCircle((int) (mSize.right / 2), (int) (mSize.bottom / 2),
        mWidthInside, mPaint);
Run Code Online (Sandbox Code Playgroud)

这样做的问题是背景是静态的LTGRAY,我希望透明.

我怎样才能让圆圈的中心透明?

我试过以下希望该drawArc函数只能创建一条画线宽度的线条,而不是填充中心.它在面部填充中心.

RectF rectF = new RectF(centerX - mRadius, centerY - mRadius, centerX
            + mRadius, centerY + mRadius);
canvas.drawArc(rectF, 0, 360, false, mPaint);
Run Code Online (Sandbox Code Playgroud)

关于如何保持圆心的透明度的建议?

android android-canvas

2
推荐指数
1
解决办法
5226
查看次数

在Android中使用什么来绘制 - View或SurfaceView?

小序幕: 我正在为Android创建一种绘图应用程序(API 14及更高版本).几个月前我开始研究它并决定使用SurfaceView作为画布来绘制.我认为这是一个很好的决定,因为 SurfaceView 可以直接使用Graphics.一切似乎工作正常,直到有一天我注意到绘图过程有点滞后.那里可能有很多奇怪的代码.

无论如何,现在我正在优化代码和东西,我想,我真的需要使用SurfaceView这样的场景吗?我需要从"画布"中获取的主要内容是绘制平滑并能够所有绘图保存到位图 - >外部存储上的文件(这样可以正常工作).

那么,我应该使用简单的View还是SurfaceView?此外,听到你的决定/主张的道具和缺点会很棒.

谢谢

android view draw surfaceview android-canvas

2
推荐指数
1
解决办法
4610
查看次数

如何创建可绘制对象的位图

我正在为android开发自定义视图.为此我想让用户能够选择和使用图像,就像使用时一样ImageView

attr.xml中,我添加了以下代码.

<declare-styleable name="DiagonalCut">
    <attr name="altitude" format="dimension"/>
    <attr name="background_image" format="reference"/>
</declare-styleable>
Run Code Online (Sandbox Code Playgroud)

在自定义视图中,我得到的值Drawable是xml中提供的值app:background_image="@drawable/image"

TypedArray typedArray = getContext().obtainStyledAttributes(arr, R.styleable.DiagonalCut);
altitude = typedArray.getDimensionPixelSize(R.styleable.DiagonalCut_altitude,10);
sourceImage = typedArray.getDrawable(R.styleable.DiagonalCut_background_image);
Run Code Online (Sandbox Code Playgroud)

我想使用sourceImage它创建一个Bitmap ,这是一个Drawable对象.

如果我出错的方式请提供替代方案.

android bitmap android-custom-view android-canvas

2
推荐指数
1
解决办法
6550
查看次数