0

私は Android の初心者で、Java をいくつか使用しています。初めてのアプリの作成のチュートリアルのみを完了しました。

次はシンプルな2Dグラフィックスを使うアプリを作りたい

まず、無限ループで 2 つの色 (赤と緑) の間で画面を点滅させる方法を見つけたいと思います。

wait int seconds;
make screen red;
wait int seconds;
make screen green;

loop forever;

役立つチュートリアルやソースコードを教えてください。

どうもありがとう

4

5 に答える 5

3

ご意見ありがとうございます。このコードは問題なく動作するようです

package biz.consett.mydraw;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

/* Flash the screen between red and green each second */
public class MainActivity extends Activity {
    final static int INTERVAL = 1000; // 1000=1sec   
    private static View myView = null;
    boolean whichColor = true;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myView = (View) findViewById(R.id.my_view);
        myView.setBackgroundColor(Color.RED);// set initial colour
        new Thread(new Runnable() {
            public void run() {
                while (true) {
                    try {
                        Thread.sleep(INTERVAL);
                    } 
                    catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    updateColor();
                    whichColor = !whichColor;
                }
            }
        }).start();
    }

    private void updateColor() {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (whichColor) 
                    myView.setBackgroundColor(Color.RED);
                else 
                    myView.setBackgroundColor(Color.GREEN);
            }
        });
    }
}

レイアウト、activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<View

android:id="@+id/my_view"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

</View>

</RelativeLayout>
于 2013-03-11T14:17:16.970 に答える
0

このコードは色の配列を実装しており、正常に動作します - どうもありがとう。
(同じマニフェストとレイアウトを使用) package biz.consett.mydraw;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

/* 
 * Simple use of Android Thread
 * Flash the screen between an array of colours at an interval 
 * 
 */

public class MainActivity extends Activity


static final int[] COLORS =
{AColor.RED,  AColor.BLUE, AColor.GREEN};// colour array
// Colour Red Green Blue 
// Index [0] [1] [2]

private int currentColor = 0;

private View MYVIEW = null;
//boolean whichColor = true;

final int interval = 100; // 0.6 second static final?

@Override
public void onCreate(Bundle savedInstanceState)
{

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    MYVIEW = (View) findViewById(R.id.my_view);

    MYVIEW.setBackgroundColor(Color.RED);// set initial colour

    new Thread(new Runnable()
    {

        // @Override
        public void run()
        {

            while (true)
            {
                try
                {
                    Thread.sleep(interval); // sleep for interval

                } 

                catch (InterruptedException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                    updateColor();

            } // end of  while true loop


        }// end of run

    }).start(); // end of runnable

} // end of onCreate bundle

private void updateColor()
{

    runOnUiThread(new Runnable()
    {

        @Override
        public void run()
        {

            if (currentColor > COLORS.length - 1)
            { 
                currentColor = 0;

            }
            MYVIEW.setBackgroundColor(COLORS[currentColor]);

            currentColor++;

        }// end of run
    });

}
}// -------------END OF MainActivity extends Activity-----------------------

package biz.consett.mydraw;

public class AColor
{

final static int RED = 0xFFFF0000; // hex alpha_R_G_B 
final static int GREEN = 0xFF00FF00;
final static int BLUE = 0xFF0000FF; 
final static int PURPLE = 0xFFAA00AA;
}  
于 2013-03-13T15:28:34.617 に答える
0

すでに多くのソリューションがありますが、独自のソリューションを追加するだけです...

タイマーが必要になります

@Override
protected void onCreate(Bundle bundle)
{
   ...
   Timer timer = new Timer();
   TimerTask updateColor = new SwitchColorTask();
   timer.scheduleAtFixedRate(updateColor, 100, 100);
   ...
}

タイマー タスク。

private boolean colorSwitched;
class SwitchColorTask extends TimerTask {
   public void run() {
       LinearLayout main = (LinearLayout)findViewById(R.id.main);
       if(colorSwitched){
          main.setBackgroundColor (Color.GREEN)
       }
       else{
          main.setBackgroundColor (Color.RED)
       }           
       colorSwitched=!colorSwitched
   }
}
于 2013-03-08T14:12:29.870 に答える