绘制固定坐标的线条

时间:2013-02-01 15:15:31

标签: android android-canvas

我有问题,我已经尝试解决问题,但我还没有找到解决方案。

我有两列图像。我想通过每个图像的中点加入它们。我遇到的问题是附着点向下移动,就像图像一样 example of my problem

我有一个“main”类,我有内部类:public class DrawView扩展了LinearLayout 与属性: private Paint paint = new Paint(); 然后我设置了下一个值:             paint.setColor(Color.BLACK);             paint.setStrokeWidth(6);

我使用下一个代码绘制线条:

public void onDraw(Canvas canvas) {
    }

    @SuppressLint("UseValueOf")
    @Override
    public void dispatchDraw(Canvas canvas) {
        super.dispatchDraw(canvas);
        if (activateDraw) {
            for (int i = 0; i < 5; i++) {
                             //I not include the color selection.
                    x1= Image[i].x + Image[i].width;
                    y1=Image[i].y+ (new Double(Image[i].height / 2).intValue()));

                    x2=ImagePr[i].x;
                    y2=ImagePr[i].y + (new Double((ImagePr[i].height) / 2).intValue()));
                    canvas.drawLine(x1, y1, x2, y2, paint);
            }
            activateDraw = false;
        }
    }

要设置x和y值,我使用方法:

public void setData(ImageView img) {
    image = img;
    int[] values = new int[2];
    image.getLocationInWindow(values);
    x = values[0];
    y = values[1];
    width = image.getWidth();
    height = image.getHeight();
}

在主类中我有一个属性: Canvas auxCanvas = new Canvas(); 当我想绘制线条时,我执行onDraw(auxCanvas)方法。为什么线条不会加入“中点”?

任何人都可以帮助我吗?谢谢!!

@Shaunak对不起,这是一次失败。我删除了它并没有影响,问题仍在继续。谢谢!

@anthropomo我尝试了你的改变,但问题还在继续。

我不明白为什么在模拟器中似乎工作正常,但不在设备上。

解决方案:

(我以为我写了答案,对不起) 解决方案非常简单。该应用程序的目标是6-8岁的学生,所以我决定隐藏状态栏,上面的代码完美无需更改! 隐藏状态栏: Hide Notification bar

How to hide the title bar for an Activity in XML with existing custom theme

如果其他人想要显示状态栏,我想你需要减去状态栏的高度。

1 个答案:

答案 0 :(得分:1)

参考:http://developer.android.com/reference/android/util/DisplayMetrics.html#density

做这件事对你有用吗?:

float d = getResources().getDisplayMetrics().density;
canvas.drawLine(x1*d, y1*d, x2*d, y2*d, paint);

注意:如果乘法不起作用,请尝试除以d ...我永远不记得该怎么做。