Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的(自定义视图)画布上没有画线?_Android_Android Canvas_Ondraw - Fatal编程技术网

Android 为什么我的(自定义视图)画布上没有画线?

Android 为什么我的(自定义视图)画布上没有画线?,android,android-canvas,ondraw,Android,Android Canvas,Ondraw,我试图从浮点[]中的点绘制一条直线。我知道这些点会到达drawLines()函数,因为我将它们记录在这里: 绘图点::154.18182:784.8889:215.27272:677.3333: 215.27272 : 677.3333 : 337.45453 : 462.22217 : 337.45453 : 462.22217 : 276.36365 : 569.7778 : 276.36365 : 569.7778 : 398.54544 : 354.66663 : 398.54544 :

我试图从
浮点[]
中的点绘制一条直线。我知道这些点会到达
drawLines()
函数,因为我将它们记录在这里:

绘图点::154.18182:784.8889:215.27272:677.3333: 215.27272 : 677.3333 : 337.45453 : 462.22217 : 337.45453 : 462.22217 : 276.36365 : 569.7778 : 276.36365 : 569.7778 : 398.54544 : 354.66663 : 398.54544 : 354.66663 : 154.18182 : 784.8889 : 154.18182 : 784.8889 : 337.45453 : 462.22217 : 337.45453 : 462.22217 : 520.7273 : 139.55554 : 520.7273 : 139.55554 : 581.8182 : 32.0 : 581.8182 : 32.0 : 398.54544:354.66663:398.54544:354.66663:154.18182:784.8889

*注意:不要注意点的重复-第一行的终点是第二行的起点。“绘制线”功能需要四个连续点,因此需要重复点

我的
宽度
高度
是有效的
整数
宽度=672高度=968

My
onDraw
函数:

<za.co.widge.test.linegraph.LineGraphView 
    android:id="@+id/linechart"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:background="#444"
    android:padding="16dp"
    android:layout_weight="1"
    />
注意,我已经尝试了一些现在被注释掉的东西。我的背景是灰色的,
颜色。红色的
线条在绘制时应该是可见的

@Override
public void onDraw(Canvas canvas){
    //setWillNotDraw(true);

    Log.d(TAG, "DRAW DAMNIT!!!");
    Log.d(TAG, "Width = " + (int) width + " Height = " + (int)height);

    paint = new Paint();
    paint.setStyle(Style.STROKE);
    paint.setStrokeWidth(4);
    paint.setColor(Color.RED);
    //paint.setAntiAlias(true);
    //paint.setShadowLayer(4, 2, 2, 0x81000000);

    Bitmap bitmap = Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888);
    canvas = new Canvas(bitmap);

    String drawPointsGo = "";
    float[] drawPoints = new float[points.size()];
    for(int i=0; i<points.size(); i++){
        Float f = points.get(i);
        drawPoints[i] = (float) (f != null ? f : 0.0);
        drawPointsGo = drawPointsGo + " : " + drawPoints[i];
    }
    Log.d(TAG, "Draw Points: " + drawPointsGo);

    canvas.drawLines(drawPoints, paint);
}
@覆盖
公共空白onDraw(画布){
//setWillNotDraw(真);
Log.d(标记“画该死的!!!”);
Log.d(标记“Width=”+(int)Width+“Height=”+(int)Height);
油漆=新油漆();
油漆.设置样式(样式.笔划);
油漆。设置行程宽度(4);
油漆。设置颜色(颜色。红色);
//paint.setAntiAlias(真);
//绘制.设置阴影层(4,2,2,0x81000000);
位图Bitmap=Bitmap.createBitmap((int)宽度,(int)高度,Bitmap.Config.ARGB_8888);
画布=新画布(位图);
字符串drawPointsGo=“”;
float[]drawPoints=新的float[points.size()];
对于(int i=0;i删除此行:

Bitmap bitmap = Bitmap.createBitmap((int)width, (int)height, Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
您正在用屏幕外(位图备份)方法覆盖传递给onDraw方法的画布实例,所以屏幕上不会打印任何内容