This I want I want to achieve:
An activity starts with no ClickListener and has four textviews all with white background
I want to change th
There is no need to create a thread for this, or animations.
The solution is really simple: use Handler.postDelayed() or Handler.sendMessageDelayed():
http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long) http://developer.android.com/reference/android/os/Handler.html#sendMessageDelayed(android.os.Message, long)
For a robust implementation, be sure to remove any pending messages at least by Activity.onDestroy(). (Or if you are posting them in Activity.onStart(), remove them in Activity.onStop(); if posting in Activity.onResume(), remove in Activity.onPause().)
I have one sample for this task but by thread with handleMessage
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.widget.EditText;
import android.widget.TextView;
public class l15_threadOneaacto extends Activity {
/** Called when the activity is first created. */
TextView tv[]=new TextView[4];
EditText et;
Thread bcko;
static int index=0;
boolean isRunning=false;
boolean acceptevent=false;
Handler hn=new Handler(){
@Override
public void handleMessage(android.os.Message msg) {
switch (index) {
case 0: tv[0].setBackgroundColor(Color.BLUE); break;
case 1: tv[0].setBackgroundColor(Color.WHITE); break;
case 2: tv[1].setBackgroundColor(Color.BLUE); break;
case 3: tv[1].setBackgroundColor(Color.WHITE); break;
case 4: tv[2].setBackgroundColor(Color.BLUE); break;
case 5: tv[2].setBackgroundColor(Color.WHITE); break;
case 6: tv[3].setBackgroundColor(Color.BLUE); break;
case 7: tv[3].setBackgroundColor(Color.WHITE); break;
}
index++;
if(index==8){
acceptevent=true;
et=(EditText)findViewById(R.id.bbb);
et.setText("ready for input");
}
};
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv[0]=(TextView)findViewById(R.id.tx1);
tv[1]=(TextView)findViewById(R.id.tx2);
tv[2]=(TextView)findViewById(R.id.tx3);
tv[3]=(TextView)findViewById(R.id.tx4);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
bcko=new Thread (new Runnable() {
@Override
public void run() {
try {
//
for(int i=0;i<8 && isRunning;i++){
Thread.sleep(2000);
hn.sendMessage(hn.obtainMessage());
}
} catch (Exception e) {
// TODO: handle exception
}
}
});
isRunning=true;
bcko.start();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
isRunning=false;
}
}
kayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tx1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:text=""
/>
<TextView
android:id="@+id/tx2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:text=""
/>
<TextView
android:id="@+id/tx3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:text=""
/>
<TextView
android:id="@+id/tx4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#FFFFFFFF"
android:text=""
/>
<EditText
android:id="@+id/bbb"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="not ready "
/>
</LinearLayout>
Good luck,
You can achieve this by creating Animation sequences, in either XML or Java code, and triggering them in sequence. You will need to define a animation sequence with LayoutAnimationController, at the end of the animation, you can add the ClickListener.
Developer Life has a good tutorial to get you started on animations. Jeff has a two-part tutorial series on animations - part 1, part 2.
Hope this helps, indyfromoz