原创文章,转载请标注出处----
首先,定义一个rotate的animation:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
</set>
在code里面,实例化一个freshThrad去画animation。点击stop的时候,call freshThrad.interrupt();将此时wait的freshThrad唤醒,调用imagview的clearAnimation方法,停止动画。
package com.animation.test;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageView;
public class AnimationTest extends Activity implements OnClickListener{
private ImageView icon;
private Animation animation;
private Button btStop;
private Button btStart;
private boolean runFlag = true;
private MyThread freshThrad;
private final static int START_ANIMATION = 100;
private final static int STOP_ANIMATION = 101;
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch(msg.what){
case STOP_ANIMATION:
icon.clearAnimation();
break;
case START_ANIMATION:
icon.startAnimation(animation);
break;
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
icon = (ImageView)findViewById(R.id.icon);
btStop = (Button) findViewById(R.id.stop);
btStart = (Button) findViewById(R.id.start);
btStop.setOnClickListener(this);
btStart.setOnClickListener(this);
showAnimation();
icon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.icon:
icon.startAnimation(animation);
break;
case R.id.stop:
freshThrad.interrupt();
break;
case R.id.start:
showAnimation();
break;
}
}
private void showAnimation(){
animation = AnimationUtils.loadAnimation(this, R.anim.rotate_animation);
animation.setAnimationListener(new AnimationListener(){
@Override
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
icon.startAnimation(animation);
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
});
freshThrad = new MyThread();
freshThrad.start();
}
class MyThread extends Thread {
@Override
public synchronized void run() {
// TODO Auto-generated method stub
Message msg1 = new Message();
msg1.what = START_ANIMATION;
mHandler.sendMessage(msg1);
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
Log.d("debug", "stop therad");
Message msg2 = new Message();
msg2.what = STOP_ANIMATION;
mHandler.sendMessage(msg2);
e.printStackTrace();
}
}
}
}
电击start之后,重新起thread开始动画。

- 大小: 8.3 KB
分享到:
相关推荐
在Android应用开发中,文件上传是一项常见的任务,尤其是在处理大文件或者需要提高用户交互体验时,多线程技术显得尤为重要。本主题聚焦于"Android多线程文件上传",我们将探讨如何利用多线程技术来优化文件上传过程...
这个"Android多线程分段下载源码"实例是一个很好的学习资源,它实现了文件的分块下载,并允许用户自定义线程数来控制下载速度和效率。下面我们将详细探讨这一技术。 首先,我们要理解什么是分段下载。传统的单线程...
android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序,android多线程后台下载示例程序
在Android开发中,进行大文件下载时,为了提高效率并充分利用设备资源,通常会采用多线程下载技术。此外,为了提升用户体验,断点续传功能也显得尤为重要,尤其是在网络不稳定或者用户中断下载后,可以从上次停止的...
在Android开发中,多线程是一项至关重要的技术,它能够帮助开发者实现应用程序的高效运行,尤其是在处理耗时操作如网络请求、数据加载等场景。本文将深入探讨Android多线程的相关知识点,基于“android多线程demo(很...
在Android应用开发中,多线程下载是一种常见的技术,它能显著提高大文件下载的效率,减少用户等待时间。本文将深入探讨Android多线程下载的原理、实现方式以及优化策略。 首先,我们要理解为什么需要多线程下载。在...
根据给定的文件信息,文件标题为《Android多线程全新讲解.pdf》,描述为该文档内容的同义表达,标签为“技术及资料”,以及部分内容的概述。在这些信息的基础上,我们可以生成如下知识点: 1. Java多线程基础知识:...
总之,Android多线程下载涉及到了Android线程模型、并发控制、文件操作等多个方面,需要开发者有扎实的基础知识和实践经验。通过合理利用多线程,不仅可以提升应用性能,还能提高用户满意度。在实际开发中,要根据...
本文将基于提供的标题“Android 多线程下载简单demo之Thread”和描述,深入讲解如何实现一个简单的多线程下载功能。这个示例来源于一个CSDN博客,通过访问提供的链接...
在Android应用开发中,多线程下载文件是一个常见的需求,特别是在处理大文件或者需要优化用户体验时。这个场景中,我们采用多线程技术来提高下载效率,并且支持断点续传功能,这意味着如果下载过程中因网络问题中断...
因Android Studio下整体项目太大,此文件仅包含核心代码,核心都在MainActivity中,包括: 1. 主线程直接加载,不可用; 2. 采用handler+Thread模式实现多线程异步加载; 3. 引入线程池来管理多线程 4. 引入线程池,...
在Android开发中,多线程图片下载是一个常见的需求,尤其在大数据量或者高并发的情况下,单线程下载图片会严重影响用户体验,因为这可能导致UI线程阻塞,使得应用显得卡顿。这篇博客“Android 多线程图片下载开源...
在Android应用开发中,多线程技术是必不可少的,它能帮助开发者实现高效的代码执行,提升用户体验,并确保应用程序的响应性。本资源包主要聚焦于Android平台上的多线程编程,包括理论概念、最佳实践以及实际应用案例...
在Android开发中,多线程下载是提升用户体验的重要技术,特别是在下载大文件如APK时。这个"android多线程下载demo"展示了如何利用多线程分段下载一个APK文件,同时实现实时更新UI展示下载进度,并在下载完成后自动...
在Android平台上,多线程下载是一项重要的技术,它允许应用程序同时从服务器获取数据,从而显著提高了文件下载的速度和效率。本教程将深入讲解如何在Android环境中实现多线程下载功能,以及涉及的相关知识点。 首先...
本文将深入探讨如何在Android中使用多线程操作SQLite并解决数据库被锁定的问题。 首先,理解“database locked”的原因。SQLite采用独占式锁定策略,这意味着当一个事务正在进行时,其他试图访问同一数据库的事务会...
在Android开发中,多线程是一项至关重要的技术,它使得应用程序可以同时执行多个任务,提升用户体验,特别是对于处理耗时操作如网络请求、数据库操作或大量计算时。本实例将深入探讨Android多线程的实践应用及理论...
自己写的Android多线程多任务断点下载的一个Demo。 1.通过Service和线程池配合控制下载任务(包含分段下载)的开始和暂停; 2.通过数据库对文件信息以及下载线程信息进行保存,实现断点下载。 有发现的bug希望各路坛...
在Android开发中,多线程下载是一项常见的技术,它能够显著提高大文件的下载效率,尤其是在网络环境不稳定或带宽有限的情况下。本案例主要探讨了Android中如何利用多线程来实现高效、稳定的文件下载。 首先,理解多...
在Android开发中,多线程断点下载是一项重要的技术,特别是在处理大文件或者网络环境不稳定的情况下,能够提高下载效率并保证用户体验。本教程主要聚焦于如何实现一个具有开始、暂停功能,并集成到ListView中的多...