画进度条

package com.lq.myView;

import com.lq.fruitActivity.R;
import com.lq.fruitActivity.LoadingActivity;
import com.lq.fruitActivity.MainActivity;
import com.lq.screenInfo.ScreenInfo;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.view.View;

public class LoadView extends View {

	private Bitmap mWelcomeBitmap;
	private Rect mWelcomeSrc, mWelcomeDst;
	private Drawable mBackground;
	private int mWelcomeWidth = 0;
	private Context mContext;

	public LoadView(Context context) {
		super(context);
		//获取图片资源
		mBackground = context.getResources().getDrawable(
				R.drawable.load_background);
		
		mBackground.setBounds(0, 0, ScreenInfo.getScreenWidth(),
				ScreenInfo.getScreenHeight());
		
		//获取图片资源
		mWelcomeBitmap = BitmapFactory.decodeResource(context.getResources(),
				R.drawable.welcome);
		
		//创建两个空的矩形
		mWelcomeSrc = new Rect();
		mWelcomeDst = new Rect();

		mContext = context;

	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);

		drawBackground(canvas);

		drawWelcomeBar(canvas);
		
		//刷新屏幕
		invalidate();
	}

	// 画背景
	private void drawBackground(Canvas canvas) {
		mBackground.draw(canvas);
	}

	// 画welcome进度条,原理是不断截取越来越大部分图片,画到某个位置,直到图片截取到整张
	private void drawWelcomeBar(Canvas canvas) {
		
		// 确定源矩形框的坐标,就是设置刚截取原图片的大小,开始时矩形为零,当mWelcomeWidth = 2;截取的就是宽为2,高为原图片的高
		mWelcomeSrc.set(0, 0, mWelcomeWidth, mWelcomeBitmap.getHeight());

		// 确定目标矩形框的坐标,就是设置把原图片截取的部分画到那个位置
		mWelcomeDst.set(150, 160, 150 + mWelcomeWidth,
				160 + mWelcomeBitmap.getHeight());

		// 利用源矩形和目标矩形,把位图画到画布上
		canvas.drawBitmap(mWelcomeBitmap, mWelcomeSrc, mWelcomeDst, null);

		//截取的宽不断加2
		mWelcomeWidth += 2;
		
		System.out.println("-------" + mWelcomeBitmap.getWidth());
		System.out.println("----mWelcomeWidth---" + mWelcomeWidth);
		
		//当图片大概截取完后,跳转另外的Activity,并确保只跳转一次,否则会不断的把当前的Activity加到栈内
		if (mWelcomeBitmap.getWidth() + 2 > mWelcomeWidth
				
				&& mWelcomeWidth >= mWelcomeBitmap.getWidth()) {

			jumpMain();

		}
	}

	private void jumpMain() {
		Intent intent = new Intent(mContext, MainActivity.class);
		mContext.startActivity(intent);
		
		//跳转后,释放跳转前的Activity
		((LoadingActivity) mContext).finish();
	}

}
 
<img alt="" src="https://img-my.csdn.net/uploads/201301/23/1358927502_8921.jpg" />


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值