我是初学者。我遇到了问题。 这是关于视图上的画布的示例。
应该看到它上面的圆圈和文字。
(http://goo.gl/6ZPvQ)我的声誉不足以得到一张照片。
但没有发生任何事情。
这是我绘制画布的视图。
public class TestCanvasActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphics(this));
}
}
class MyGraphics extends View {
private Paint cPaint,tPaint;
private Path circle;
private String text;
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
cPaint = new Paint(Color.GRAY);
tPaint = new Paint(Color.BLACK);
circle = new Path();
text = "Welcome to Android!!";
circle.addCircle(150, 150, 100, Direction.CW);
canvas.drawPath(circle, cPaint);
canvas.drawTextOnPath(text, circle, 0, 20, tPaint);
}
public MyGraphics(Context context) {
super(context);
// TODO Auto-generated constructor stub
setBackgroundColor(R.drawable.background);
}
}
这是背景图片代码!!
background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFFFFF"
android:endColor="#808080"
android:angle="270" />
</shape>
谢谢!
我犯了一个低级错误。我将 cPaint = new Paint(Color.GRAY)更改为下两行。有用!!
cPaint = new Paint();
cPaint.setColor(Color.WHITE);
谢谢你们。
答案 0 :(得分:0)
1。将invalidate();
放在第canvas.drawTextOnPath(text, circle, 0, 20, tPaint);
行之后
2. 。尽量不要在构造函数中设置Background并查看它是否绘制。
答案 1 :(得分:0)
我在“Hello Android 3rd”中看到了一个例子。我发现cPaint = new Paint(Color.GRAY);
错了。我将其更改为cPaint = new Paint(); cPaint.setColor(Color.WHITE);
并且有效。
答案 2 :(得分:0)
它只是因为你在paint中传递值Construtor * cPaint = new Paint(VALUES)*它返回null!当您在canvas函数中将null作为paint对象传递时,它会给出默认颜色(BLACK)。初始化绘制对象的正确方法如下...
cPaint = new Paint();
cPaint.setColor(Color.GRAY);
tPaint = new Paint();
tPaint.setColor(Color.BLACK);