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" />