我在SurfaceView上使用canvas.drawText,輸出在仿真器上看起來正確,但是當我將應用程序部署到我的設備(Samsung Galaxy S3)時,文本被寫入從上到下是這樣的:Surfaceview上的Drawtext只能在模擬器上工作,而不能在設備上工作
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
}
}
}
}
}
感謝您的幫助! Stephoid
你有沒有從設備堆棧跟蹤顯示? –
@MarekSebera爲什麼會有堆棧跟蹤?它不會崩潰,只是表現出意想不到的行爲。 – kabuko
@ kabuko對不起,誤解了這個問題。無論如何,我沒有看到你在onCreate中爲視圖設置任何尺寸,你可以嘗試設置視圖的寬度和高度嗎? –