问题:我想在在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();
}
}
解决方案 »
- gridview 点击图片上出现下载百分比 android ?
- 大侠们...快出来帮帮小弟!android 怎么获取手机自己的IP?````````
- 【求高手】socket通讯服务端用线程池出问题,望版主帮顶,搞了两天没解决,之前发帖也没什么人回复,搞定后会源码上传
- 各类资源0分下载---第三期
- 请问如何给widget的RemoteViews中的ImageView用代码动态设定宽度?
- 请教OnKeyListener触发间隔
- android webview 调用 goBack() 返回上一页 页面有时候自动刷新
- root获得
- 关于android http协议请求错误问题
- android 如何处理不规范的json
- android源码编译问 题
- android的opengl es的几个问题
但是这种情况一般是弄个线程开关。
成员变量:boolean flag = true;
线程run方法:
run(){
while(flag){
//线程代码
}
}
在onDestory或别的周期函数里flag = false;结束线程。