2016-04-17 10 views
0

私は次の問題があります:私は自分のアプリケーションに画像を持っており、その位置は動的に変化するはずです。次のコードは、既に動作:AndroidでsetPadding()を待っています

RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 

image.setLayoutParams(layoutParams); 
image.setPadding(startX, startY, 0, 0); 
image.setVisibility(View.VISIBLE); 

for (int i=0; i<10; i++) { 
    startX+=10; 
    image.setPadding(startX, startY, 0, 0); 

    try { 
     Thread.sleep(1000); 
    } 
    catch(InterruptedException e){ 
     e.printStackTrace(); 
    } 
} 

問題は、画像の位置を即座に最終的な位置に変更されること、であるので、私はのThread.sleep行を追加しました。しかし、スレッドは10x3sのスリープ状態になり、イメージは最後の位置に変わります。私はまた、うまくいきませんでした新しいスレッドでそれをやってみました。

どのように私の目標に達することができるかについての考え?私は、あらゆるソリューションや入力に満足しています。

+0

コードの書式については、https://help.github.com/articles/basic-writing-and-formatting-syntax/を参照してください。 – totoro

答えて

0

あなたは、この動作を実現するためにHandlerRunnableの組み合わせを使用することができます:

ステップ1:

Handler handler = new Handler(); 
Runnable refreshRunnable = new Runnable() { 
        @Override 
        public void run() { 
         refreshView(); 
        } 
       } 

あなたのハンドラとのRunnable

を定義するステップ2:ここにあなたのrefreshView機能があります:

private void refreshView() { 
    count ++; //Variable initialized at 0 in your class 
    if (count < 10) { 
    startX += 10; 
    dotGreen.setPadding(startX, startY, 0, 0); 
    dotGreen.invalidate(); 
    handler.postDelayed(refreshRunnable, 1000); 
    } 
} 
+0

ええと、 "行内にシンボル変数runnableが見つかりません" handler.postDelayed(runnable、1000); " – PhysX

関連する問題