android 启动动画的渐变

一.启动动画的渐变:

    以后可能会用到的启动动画的效果:

效果图:

     

主界面:

public class MainActivity extends Activity {
    private LandingView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        lv = new LandingView(this);
		// 将自定义视图显示在本界面
		setContentView(lv);
		// 创建修改Logo透明度的异步任务
		LoGoTask task = new LoGoTask(this,lv);
		// 执行异步任务
		task.execute();
    }
}

异步图片渐变:

public class LoGoTask extends AsyncTask<Object, Integer, String> {
	// 当前的透明度取值
	int alpha = 0;
	MainActivity main;
	private LandingView lv;
	public LoGoTask(MainActivity main,LandingView lv){
		this.main = main;
		this.lv = lv;
	}
	@Override
	protected void onPreExecute() {
		// TODO Auto-generated method stub
		super.onPreExecute();
	}
	/**
	 * 异步任务执行成功后,自动跳转至应用程序主界面
	 * */
	@Override
	protected void onPostExecute(String result) {
		    Intent intent=new Intent(main, TestActivity.class);
		    main.startActivity(intent);
		    main.finish();
	}
	/**
	 * 修改Logo自定义视图图片透明度,并重绘
	 * */
	@Override
	protected void onProgressUpdate(Integer... values) {
		int temp = values[0].intValue();
		lv.redraw(temp);
	}
	/**
	 * 异步任务,循环改变透明度取值
	 * */
	@Override
	protected String doInBackground(Object... arg0) {
		// TODO Auto-generated method stub
		while (alpha < 255) {
			try {
				Thread.sleep(100);
				publishProgress(new Integer(alpha));
				alpha += 5;
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return null;
	}
}

显示图片制作:

public class LandingView extends View{

		private  int alpha = 0;

		private Bitmap logo;
		private Context context;
		public LandingView(Context context) {
			super(context);
			this.context = context;
			logo = BitmapFactory.decodeResource(context.getResources(),
					R.drawable.background1);
		}
		public void redraw(int aplha){
	       this.alpha = aplha;
	       invalidate();
		}
		@Override
		protected void onDraw(Canvas canvas) {
			// TODO Auto-generated method stub
			super.onDraw(canvas);
			// 清屏
			canvas.drawColor(Color.WHITE);
			// 创建画笔对象
			Paint p = new Paint();
			// 设置画笔对象的透明度为当前透明度取值
			p.setAlpha(alpha);
			WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
			DisplayMetrics dm=new DisplayMetrics();
			manager.getDefaultDisplay().getMetrics(dm);
			int width2=dm.widthPixels;
			int height2=dm.heightPixels;
			// 在视图上利用画笔绘制Logo图像
			RectF rect = new RectF(0,0,width2,height2);
			canvas.drawBitmap(logo, null, rect, p);
		}
}

再来个进入界面:

public class TestActivity extends Activity{
	 @Override
	    protected void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.activity_main);

	    }
}

都统一用一个布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</LinearLayout>
时间: 2024-11-08 23:29:37

android 启动动画的渐变的相关文章

android开机动画启动流程

从android的Surface Flinger服务启动分析知道,开机动画是在SurfaceFlinger实例通过调用startBootAnim()启动的. 下面我们就一起学习BootAnim是如何启动和结束的,我精读代码前都喜欢先描出框架图,以此图为基础再去研读会达到事半功倍的效果.好吧,直接上图. 内核起来后会启动第一个进程,即init进程. init进程会根据init.rc配置启动surfaceflinger进程. service surfaceflinger /system/bin/su

Android 应用启动动画代码

requestWindowFeature(Window.FEATURE_NO_TITLE);//设置无标题 setContentView(R.layout.activity_main); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏 ImageView welcomeImg = (ImageView) findVi

Android 模仿微信启动动画

本文内容 环境 项目结构 演示微信启动动画 本文演示微信启动动画.请点击此处下载,自行调试. 下载 Demo 环境 Windows 2008 R2 64 位 Eclipse ADT V22.6.2,Android 4.4.3 SAMSUNG GT-I9008L,Android OS 2.2.2 项目结构 图 1 项目结构 com.example.weixinbootanimationdemo 包,是三个Activity对应的类,分别是启动时停留的 5 秒动画:5 秒后进入 ViewPager 动

Android 模仿微信启动动画(转)

本文内容 环境 项目结构 演示微信启动动画 本文演示微信启动动画.请点击此处下载,自行调试. 顺便抱怨一下,实践性(与研究性质的相对)技术博的“七宗罪”: 第一宗罪,错字连篇,逻辑不清: 第二宗罪,文章冗长,排版混乱: 第三宗罪,拿来主义,问题不在抄,在自己不做验证.模仿是入门和深入学习的.躲不开的第一步: 第四宗罪,文章空洞,没源代码: 第五宗罪,有源代码,但有缺失: 第六宗罪,源代码不全也就算了,还不提供 Demo 下载: 第七宗罪,有 Demo 可以下载,但他 NND 的还要积分. 下载

Android AnimationDrawable动画与APP启动引导页面

Android AnimationDrawable动画与APP启动.加载引导页面(画面) AnimationDrawable是Android的Frame动画,可以简单的认为此AnimationDrawable能够将一系列资源图片加载成"电影"一样播放.当下,在一些APP中,往往需要在APP切入主题之前加载一些引导页面(宣传海报.装饰画面.赞助商广告等等),这些内容要两个共同特点: (1)不是APP的重点内容,而仅仅只是像展台一样展览一些画面. (2)前.当前.后页面基本上无特别需要处理

android 自定义动画

android中主要有两种动画模式,一种是tweened animation(渐变动画),包含了4种动画类型,alpha(透明度).scale(尺寸缩放).translate(位置变换).rotate(图形旋转),第二种是frame by frame (帧动画),就是逐帧播放设置好的动画 我们看下第一种动画的实现 第一步,定义好动画的xml文件,在res/anim下新建myanim.xml <?xml version="1.0" encoding="utf-8"

Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中我们学习了属性动画的一些进阶技巧,包括ValueAnimator和ObjectAnimator的高级用法,那么除了这些之外,当然还有一些其它的高级技巧在等着我们学习,因此本篇文章就对整个属性动画完全解析系列收个尾,来学习一下剩下的非常重要的高级技巧. 另外,本篇文章中使用的代码是建立在上篇文章基础之

(转)Android属性动画完全解析(下),Interpolator和ViewPropertyAnimator的用法

目录(?)[-] Interpolator的用法 ViewPropertyAnimator的用法 转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/44171115 大家好,欢迎继续回到Android属性动画完全解析.在上一篇文章当中我们学习了属性动画的一些进阶技巧,包括ValueAnimator和ObjectAnimator的高级用法,那么除了这些之外,当然还有一些其它的高级技巧在等着我们学习,因此本篇文章就对整个属性动画完全解析

79.Android之动画基础

转载:http://a.codekk.com/detail/Android/lightSky/%E5%85%AC%E5%85%B1%E6%8A%80%E6%9C%AF%E7%82%B9%E4%B9%8B%20Android%20%E5%8A%A8%E7%94%BB%E5%9F%BA%E7%A1%80 一 传统 View 动画(Tween/Frame) 1.1 Tween 动画 主要有 4 中:缩放.平移.渐变.旋转 文件位置: res/anim/filename.xml编译资源的数据类型:an