我有问题,我已经尝试解决问题,但我还没有找到解决方案。
我有两列图像。我想通过每个图像的中点加入它们。我遇到的问题是附着点向下移动,就像图像一样
我有一个“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
如果其他人想要显示状态栏,我想你需要减去状态栏的高度。
答案 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
...我永远不记得该怎么做。