2013-04-26 82 views
0

我在製作一個只顯示時鐘的應用程序,但我希望每次用戶觸摸屏幕時都會更改文本的顏色(來自在colors.xml文件中的預選顏色列表),但我沒有線索從哪裏開始。有人能指引我朝着正確的方向嗎?如何更改觸摸(屏幕)上的textView(digitalClock)顏色

這裏的主要活動:

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" /> 

回答

0

我還沒有DigitalClock做交易,但我認爲,首先,你應該參考DigitalClock variable,n ot TextView。其次,要攔截觸摸事件,您需要覆蓋您的活動的方法,每次用戶觸摸屏幕時都會回調。

0

您應該遵循以下步驟

  1. 使用一個TimerTask to.continusly顯示時間
  2. 對時鐘視圖實現一個touchlistener

這樣 view.setOnTouchListener

  1. 製作數據像這樣的顏色

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

並在您的觸摸事件中使用隨機索引並將其設置爲您視圖的顏色