您的位置:首页 > 产品设计 > UI/UE

发送 handle 消息 更新UI

2013-04-06 20:05 225 查看
layout  

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/LinearLayout1"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    tools:context=".MainActivity" >

    <TextView 

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="方块"/>

    <com.trunkbow.vitertris.MainView

        android:id="@+id/mainView"

        android:layout_width="229dp"

        android:layout_height="wrap_content"

        android:padding="2px" />

</LinearLayout>

主UI类

public class MainActivity extends Activity {
MainView mainView ;
Timer  timer = new Timer();
private LinearLayout  lv ;
private TimerTask mTimerTask;
private int tmp_int ;
private int main_array[][] =new int [20][10] ;

Handler handler = new Handler()
{

@Override
public void handleMessage(Message msg) {
Log.d("","recv msg invalidate"+msg.what);
mainView.invalidate();
lv.invalidate();
super.handleMessage(msg);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (LinearLayout)findViewById(R.id.LinearLayout1);
mainView = new MainView(this, null);
mTimerTask = new TimerTask() {
@Override
public void run() {

tmp_int ++;
if(tmp_int == 20)
tmp_int = 0 ;

mainView.number[tmp_int][5] = 1 ;
if(tmp_int > 0)
mainView.number[tmp_int-1][5] = 0 ;

Log.d("","send msg "+tmp_int);
handler.sendEmptyMessage(tmp_int);
}
};

timer.schedule(mTimerTask, 1000 ,1000);

}
@Override
protected void onDestroy()
{
super.onDestroy();
timer.cancel();
}
}


发送消息线程

public class MainView extends View{

public static int x = 0;
public static int y = 0;

public  static int [][] number = new int[20][10];
public  int [][] type_a = new int [4][4] ;
public  int [][] type_b = new int [4][4] ;
public MainView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.GRAY);//设置颜色
for(int i = 0 ; i< 20 ;i++){
for(int j=0 ;  j< 10 ;j++){
if(number[i][j]==1){
canvas.drawRect(x+j*40,y+i*40 ,x+(j+1)*40 ,y+(i+1)*40 , paint);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: