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变量,而不是TextView. 其次,要拦截触摸事件,您需要覆盖活动的onTouckEvent方法,它会在用户每次触摸屏幕时回调。

于 2013-04-26T13:00:05.237 回答