【发布时间】:2013-04-02 21:00:23
【问题描述】:
我在 SurfaceView 上使用 canvas.drawText 并且输出在模拟器上看起来是正确的,但是当我将应用程序部署到我的设备(三星 Galaxy S3)时,文本从上到下书写如下:
T
E
s
t
看起来像是在文本的每个字符后添加了一个换行符。
设备是否是横向的并不重要,它永远无法工作,我不知道为什么。
我做错了什么?
在 AndroidManifest.xml 我使用:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />
我正在使用的代码:
public class MainActivity extends Activity {
DemoView renderView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
renderView = new DemoView(this);
setContentView(renderView);
}
@Override
public void onResume() {
super.onResume();
renderView.resume();
}
@Override
public void onPause() {
super.onPause();
renderView.pause();
}
private class DemoView extends SurfaceView implements Runnable{
Thread renderThread = null;
SurfaceHolder holder;
volatile boolean running = false;
public DemoView(Context context){
super(context);
this.holder = getHolder();
}
public void resume() {
running = true;
renderThread = new Thread(this);
renderThread.start();
}
public void run() {
Canvas canvas;
while(running) {
if(!holder.getSurface().isValid())
continue;
Paint test = new Paint(Color.YELLOW);
test.setColor(Color.YELLOW);
canvas = holder.lockCanvas();
canvas.drawText("TEst", 10, 10, test);
holder.unlockCanvasAndPost(canvas);
}
}
public void pause() {
running = false;
while(true) {
try {
renderThread.join();
break;
} catch (InterruptedException e) { // retry
}
}
}
}
}
感谢您的帮助! 史蒂芬
【问题讨论】:
-
你有任何来自设备的堆栈跟踪要显示吗?
-
@MarekSebera 为什么会有堆栈跟踪?它没有崩溃,只是表现出意外的行为。
-
@kabuko 对不起,误解了这个问题。无论如何,我没有看到您在 onCreate 中为视图设置任何尺寸,您可以尝试设置视图的宽度和高度吗?
-
@MarekSebera SurfaceView 填满了整个屏幕,我可以在它的任何地方画线。所以我不知道如何为视图设置额外的宽度/高度?正如 kabuko 所说,没有堆栈跟踪。
标签: android android-canvas surfaceview drawtext