问题:我想在在Handler中 用一个Intent来跳转另一个activity 可是跳过去后线程还在跑 我想用removeCallbacks来关闭 但我不知道放在那里 下面是代码红色部分package com.haven.skilltest.demo;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.Log;import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;import android.widget.ImageView;
import android.widget.LinearLayout;public class Main extends Activity {
private Animation anm;
private int marginsTop;
public List<ImageView> images;
public LinearLayout ll;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); DisplayMetrics dm = this.getResources().getDisplayMetrics(); int height = dm.heightPixels;
marginsTop = height - 100;
anm = AnimationUtils.loadAnimation(this, R.anim.myanim);
ll = new LinearLayout(this);
ll.setBackgroundResource(R.drawable.background); images = new ArrayList<ImageView>();
initImage(ll);
playAnimation();
setContentView(ll);
//finish();
}
private void playAnimation(){
new Thread(){
@Override
public void run()
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int runcount=0;
while(true)
{
if(runcount<2)
{
for(int i=0;i<=6;i++)
{
handler.sendEmptyMessage(i);
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
runcount++;
}else
{
handler.sendEmptyMessage(99);
runcount=0;
}
} }
}.start();
}
Handler handler=new Handler(){ @Override
public void handleMessage(Message msg) {
switch(msg.what)
{
case 0:
images.get(0).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.l));
images.get(0).startAnimation(anm);
break;
case 1:
images.get(1).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.o));
images.get(1).startAnimation(anm);
break;
case 2:
images.get(2).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.a));
images.get(2).startAnimation(anm);
break;
case 3:
images.get(3).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.d));
images.get(3).startAnimation(anm);
break;
case 4:
images.get(4).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.i));
images.get(4).startAnimation(anm);
break;
case 5:
images.get(5).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.n));
images.get(5).setAnimation(anm);
break;
case 6:
images.get(6).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.g));
images.get(6).setAnimation(anm);
break;
case 99:
//clearImage();
Intent intent=new Intent();
intent.setClass(Main.this, index.class);//LoginActivity是要跳转的Activity
startActivity(intent);
finish();
//handler.removeCallbacks(handler);
break;
}
//finish();
//handler.removeCallbacks(null);
}
};
private void clearImage()
{
for(ImageView image:images)
{
image.setImageDrawable(null);
image.destroyDrawingCache();
}
}
private void initImage(LinearLayout layout) {
layout.setGravity(Gravity.CENTER_HORIZONTAL);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(40, 40);
param.setMargins(30, marginsTop, 0, 0);
LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(40, 40);
param2.setMargins(-5, marginsTop, 0, 0); ImageView l = new ImageView(this);
l.setLayoutParams(param);
layout.addView(l);
images.add(l); ImageView o = new ImageView(this);
o.setLayoutParams(param2);
layout.addView(o);
images.add(o);
ImageView a = new ImageView(this);
a.setLayoutParams(param2);
layout.addView(a);
images.add(a);
ImageView d = new ImageView(this);
d.setLayoutParams(param2);
layout.addView(d);
images.add(d);
ImageView i = new ImageView(this);
i.setLayoutParams(param2);
layout.addView(i);
images.add(i);
ImageView n = new ImageView(this);
n.setLayoutParams(param2);
layout.addView(n);
images.add(n);
ImageView g = new ImageView(this);
g.setLayoutParams(param2);
layout.addView(g);
images.add(g);
//finish();
}
}
import java.util.List;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.DisplayMetrics;
import android.util.Log;import android.view.Gravity;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;import android.widget.ImageView;
import android.widget.LinearLayout;public class Main extends Activity {
private Animation anm;
private int marginsTop;
public List<ImageView> images;
public LinearLayout ll;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); DisplayMetrics dm = this.getResources().getDisplayMetrics(); int height = dm.heightPixels;
marginsTop = height - 100;
anm = AnimationUtils.loadAnimation(this, R.anim.myanim);
ll = new LinearLayout(this);
ll.setBackgroundResource(R.drawable.background); images = new ArrayList<ImageView>();
initImage(ll);
playAnimation();
setContentView(ll);
//finish();
}
private void playAnimation(){
new Thread(){
@Override
public void run()
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
int runcount=0;
while(true)
{
if(runcount<2)
{
for(int i=0;i<=6;i++)
{
handler.sendEmptyMessage(i);
try {
Thread.sleep(400);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
runcount++;
}else
{
handler.sendEmptyMessage(99);
runcount=0;
}
} }
}.start();
}
Handler handler=new Handler(){ @Override
public void handleMessage(Message msg) {
switch(msg.what)
{
case 0:
images.get(0).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.l));
images.get(0).startAnimation(anm);
break;
case 1:
images.get(1).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.o));
images.get(1).startAnimation(anm);
break;
case 2:
images.get(2).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.a));
images.get(2).startAnimation(anm);
break;
case 3:
images.get(3).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.d));
images.get(3).startAnimation(anm);
break;
case 4:
images.get(4).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.i));
images.get(4).startAnimation(anm);
break;
case 5:
images.get(5).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.n));
images.get(5).setAnimation(anm);
break;
case 6:
images.get(6).setImageDrawable(Main.this.getResources().getDrawable(R.drawable.g));
images.get(6).setAnimation(anm);
break;
case 99:
//clearImage();
Intent intent=new Intent();
intent.setClass(Main.this, index.class);//LoginActivity是要跳转的Activity
startActivity(intent);
finish();
//handler.removeCallbacks(handler);
break;
}
//finish();
//handler.removeCallbacks(null);
}
};
private void clearImage()
{
for(ImageView image:images)
{
image.setImageDrawable(null);
image.destroyDrawingCache();
}
}
private void initImage(LinearLayout layout) {
layout.setGravity(Gravity.CENTER_HORIZONTAL);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(40, 40);
param.setMargins(30, marginsTop, 0, 0);
LinearLayout.LayoutParams param2 = new LinearLayout.LayoutParams(40, 40);
param2.setMargins(-5, marginsTop, 0, 0); ImageView l = new ImageView(this);
l.setLayoutParams(param);
layout.addView(l);
images.add(l); ImageView o = new ImageView(this);
o.setLayoutParams(param2);
layout.addView(o);
images.add(o);
ImageView a = new ImageView(this);
a.setLayoutParams(param2);
layout.addView(a);
images.add(a);
ImageView d = new ImageView(this);
d.setLayoutParams(param2);
layout.addView(d);
images.add(d);
ImageView i = new ImageView(this);
i.setLayoutParams(param2);
layout.addView(i);
images.add(i);
ImageView n = new ImageView(this);
n.setLayoutParams(param2);
layout.addView(n);
images.add(n);
ImageView g = new ImageView(this);
g.setLayoutParams(param2);
layout.addView(g);
images.add(g);
//finish();
}
}
解决方案 »
- android4.1 getActionBar返回null,求解释。。。。。。。。
- 关于android机顶盒获取显示视分辨率的问题
- 求android大神笼罩啊
- Gallery中如何进行滑动事件监听?
- 有没有人将百度的MapView和SurfaceView综合应用啊
- ADT问题
- android的应用程序哪里可以下载?
- 急 急 急 !哪个有android的SDK和ADT啊?
- android调用系统自带的文件管理程序选择文件
- android Failed to export android application Caused by: java.io.FileNotFoundExce
- android源码编译问 题
- android的opengl es的几个问题
但是这种情况一般是弄个线程开关。
成员变量:boolean flag = true;
线程run方法:
run(){
while(flag){
//线程代码
}
}
在onDestory或别的周期函数里flag = false;结束线程。