项目开发通用欢迎界面

来源:互联网 发布:安居客网络经纪人登陆 编辑:程序博客网 时间:2024/05/30 05:17
# 欢迎界面动画


private void animate() {
// 旋转动画,
RotateAnimation rotateAnimation = new RotateAnimation(
0, 360, 
Animation.RELATIVE_TO_SELF, 0.5f, 
Animation.RELATIVE_TO_SELF, .5f);
rotateAnimation.setDuration(1000);
rotateAnimation.setFillAfter(true);// 让动画停留在结束时的位置

// 缩放动画
ScaleAnimation scaleAnimation = new ScaleAnimation(
0, 1, 
0, 1, 
Animation.RELATIVE_TO_SELF, 0.5f, 
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setDuration(1000);
scaleAnimation.setFillAfter(true);

// 渐变动画
AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
alphaAnimation.setDuration(2000);
alphaAnimation.setFillAfter(true);

// 动画集合
AnimationSet animationSet = new AnimationSet(false);
animationSet.addAnimation(alphaAnimation);
animationSet.addAnimation(rotateAnimation);
animationSet.addAnimation(scaleAnimation);

rl_welcome_bg.startAnimation(animationSet);

// 监听动画
animationSet.setAnimationListener(new MyAnimationListener());
}


# v4 关联源码


如果lib跑到 android dependce目录下,需要先在build path下把android dependce删除,重新把自己的lib添加到build path,再关联源码


D:/Program Files/adt-bundle-windows-x86_64_20140101/sdk/extras/android/support/v4/src


问题:06-13 02:41:53.872: E/AndroidRuntime(1257): Caused by: java.lang.ClassNotFoundException: android.support.v4.view.ViewPager in loader dalvik.system.PathClassLoader[/data/app/cn.itheima.zhbj87-2.apk]




解决:在build path里,order and export中把v4包打上对勾,才能打包到apk中


# 引导界面设置数据


private void initData() {
// 把图片数据转换成ImageView提供给Adapter
int[] imgIds = new int[] { R.drawable.guide_1, R.drawable.guide_2,
R.drawable.guide_3 };
imgs = new ArrayList<ImageView>();
for (int i = 0; i < imgIds.length; i++) {
ImageView imageView = new ImageView(this);
// 设置ImageButton的缩放类型,让图片填充ImageView
imageView.setScaleType(ScaleType.FIT_XY);
imageView.setImageResource(imgIds[i]);


// 通过设置Background让图片自动填充ImageView
// imageView.setBackgroundResource(imgIds[i]);
imgs.add(imageView);


// 有几张图片,创建几个灰点
ImageView point = new ImageView(this);
point.setBackgroundResource(R.drawable.guide_point_normal);
// 设置宽高
LayoutParams params = new LayoutParams(10, 10);
point.setLayoutParams(params);
// 设置左边距
if (i != 0) {
params.leftMargin = 10;
}


// 把灰点添加到引导界面底部
ll_guide_points.addView(point);


}


}


# 红点移动


class MyOnPageChangeListener implements OnPageChangeListener {


@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
// 当ViewPager滑动时 调用
System.out.println("position:" + position + ":positionOffset:"
+ positionOffset + ":positionOffsetPixels:"
+ positionOffsetPixels);
// 计算红点移动的距离
// 红点移动的距离/灰点的间距
// = 手指移动的距离/屏幕的宽度
// 红点移动的距离 = 手指移动的距离/屏幕的宽度 *灰点的间距
//
// 红点移动的距离 = 手指移动比例 * 灰点的间距
int redPointX = (int) ((positionOffset + position) * 20);


// 移动红点 不停的设置红点的左边距实现红点移动
android.widget.RelativeLayout.LayoutParams layoutParams = (android.widget.RelativeLayout.LayoutParams) iv_guide_redPoint
.getLayoutParams();
layoutParams.leftMargin = redPointX;
iv_guide_redPoint.setLayoutParams(layoutParams);
}


# 开始按钮在引导界面最后一页才显示


@Override
public void onPageSelected(int position) {
// 当viewpager 滑动到最后一页时,把开始按钮显示出来
if(position==imgs.size()-1){
bt_guide_start.setVisibility(View.VISIBLE);
}else{
bt_guide_start.setVisibility(View.GONE);
}
}


# 开始按钮点击后,进入主界面,同时保存已经打开过软件的boolean值

public void onClick(View v) {
// 点击开始按钮后,存值 已经打开过软件了
CacheUtil.putBoolean(this, WelcomeUI.IS_APP_FIRST_OPEN, false);
startActivity(new Intent(this,MainUI.class));
finish();
}
0 0
原创粉丝点击