3
HI!私は、onDraw()呼び出しで画像を塗り潰したい、水平スクロールビューの中にあるsurfaceViewを持っています。しかし、何も描かれていない。 私は、図面がスレッドCanvasThreadから行われるクラスを持っています。OnDraw()が呼び出されず、surfaceViewに何も描画されません - Android
public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
public PanelChart(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
setFocusable(true);
私はまた、私は運なしでコールsetWillNotDraw(偽)を追加しようとしていsynchronized (_surfaceHolder) { _panel.postInvalidate(); }
へ
`synchronized (_surfaceHolder) {
_panel.postInvalidate();
}`
を変更しようとしました:
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
canvasthread.setRunning(true);
canvasthread.start();
setWillNotDraw(false);
この共通の問題だと思われますが、私が来た解決策はありません私のために働いてきました。
ありがとうございます!
ありがとうございますが、これはうまくいきません。 OnDrawを呼び出すスレッドを開始し、スレッドをスリープさせてからロックを解除することが鍵となるのでしょうか?問題はスレッド内にあるはずですか? – kakka47
はい、アニメーションが必要なときにスレッドを開始します。私はこれがスクロールビューで動作するかどうかはわかりませんが、SurfaceViewが唯一のビューである場合はうまく動作します。 ScrollViewは、スクロールするときにそのビューを再描画しています。そのビューはSurfaceView図面と干渉する可能性があります。そのため、実験が必要です。 – Lumis
あなたが正しいと思ったのは、私が面倒を見せていたのが水平スクロールビューでした。 Lumisありがとう! – kakka47