0

時計を表示するだけのアプリを作成していますが、ユーザーが画面に触れるたびに、(colors.xml ファイルで事前に選択された色のリストから) テキストの色が変更されるようにしたいのですが、まだ変更していません。どこから始めるべきかの手がかりを得ました。誰かが私を正しい方向に向けることができますか?

主な活動は次のとおりです。

public class MainActivity extends Activity {
private static final Random RANDOM = new Random();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.activity_main);

    Handler handler = new RandomMoveHandler((TextView) findViewById(R.id.digitalClock1));
    handler.sendEmptyMessage(0);
}

// Make the handler subclass static because of this: http://stackoverflow.com/a/11408340/111777
private static class RandomMoveHandler extends Handler {
    private final WeakReference<TextView> textViewWeakReference;

    private RandomMoveHandler(TextView textView) {
        this.textViewWeakReference = new WeakReference<TextView>(textView);
    }

    @Override
    public void handleMessage(Message msg) {
        TextView textView = textViewWeakReference.get();
        if (textView == null) {
            Log.i(TAG, "WeakReference is gone so giving up.");
            return;
        }

        int x = RANDOM.nextInt(350 - 100);
        int y = RANDOM.nextInt(800 - 100);

        Log.i(TAG, String.format("Moving text view to (%d, %d)", x, y));
        textView.setX(x);
        textView.setY(y);

        //change the text position here
        this.sendEmptyMessageDelayed(0, 30000);
    }
}

private static final String TAG = MainActivity.class.getSimpleName();

}

レイアウトxmlは次のとおりです。

<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".MainActivity"
android:background="@color/black" >

 <DigitalClock
    android:id="@+id/digitalClock1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="DigitalClock"
    android:textColor="@color/ics_blue"
    android:textSize="28sp" />

4

2 に答える 2

0

次の手順に従う必要があります

  1. TimerTask を使用して、継続的に時間を表示する
  2. その時計ビューにタッチリスナーを実装する

このようにview.setOnTouchListener

  1. このような配列の色を作ります

int[] colr={Color.BLACK,Color.BLUE};

タッチイベントでランダムインデックスを使用し、それをビューの色として設定します

于 2013-04-26T14:08:45.993 に答える
0

私は対処していませんDigitalClockが、最初はDigitalClockではなく variableを参照する必要があると思いますTextView次に、アクティビティのonTouckEventメソッドをオーバーライドする必要があるタッチ イベントをインターセプトするには、ユーザーが画面に触れるたびにコールバックします。

于 2013-04-26T13:00:05.237 に答える