一款常用的Android APP框架开发(上)

本文深入探讨了Android应用中的启动页(Splash)设计与新手引导界面(Guid)的实现方法,包括布局文件、Activity类的使用,以及如何在启动页面中添加动画效果、检查版本更新等功能。同时介绍了如何利用ViewPager与CirclePageIndicator组件实现流畅的新手引导流程,以及按钮的显示逻辑。文章详细展示了如何自定义新手引导界面的图片和操作流程。

一、Splash启动页

1、布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView
        android:id="@+id/iv_splash"
        android:src="@drawable/splash"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"/>
</RelativeLayout>

注:通过修改android:src="@drawable/splash"可以修改splash启动夜显示的图片

2、SplashActivity

public class SplashActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
//用于延时3000ms之后跳转主页面
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent=new Intent(SplashActivity.this,MainActvity.class);
startActivity(intent);
finish();
}
}, 3000);
}
}


注:SplashActivity还可以做以下工作,使得启动页面更加完善:

(1)可以为图片添加动画效果(如RotateAnimationScaleAnimationAlphaAnimation);

(2)还可以在加载Splash界面的时候,检查版本更新,从而提示用户及时更新新版本

 

二、新手引导页

1、布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/vp_guid"
        android:layout_height="match_parent"
        android:layout_width="match_parent">    
    </android.support.v4.view.ViewPager>
    <com.viewpagerindicator.CirclePageIndicator
        android:id="@+id/vp_indicator"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        app:fillColor="#f00"
        android:padding="20dp"
        app:pageColor="@android:color/darker_gray"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        app:radius="7dp"
        app:strokeWidth="0dp">
    </com.viewpagerindicator.CirclePageIndicator>
    
    <Button 
        android:id="@+id/btn_start"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:text="开始体验"
        android:layout_above="@id/vp_indicator"
        android:layout_centerHorizontal="true"
        android:visibility="invisible"
        android:padding="15dp"
        android:textSize="22dp"/>  
</RelativeLayout>

新手引导界面包含一个ViewPager,一个CirclePageIndicator(用于指示ViewPager)以及一个按键,该按键用于进入主界面,它默认是隐藏的。

2、GuidActivity

public class GuidActivity extends Activity {
private static final int[] imageSrc={R.drawable.guide_1,R.drawable.guide_2,R.drawable.guide_3};
private ViewPager vp_guid;
private CirclePageIndicator vp_indicator;
private Button btn_start;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guid);
vp_guid = (ViewPager) findViewById(R.id.vp_guid);
vp_indicator = (CirclePageIndicator) findViewById(R.id.vp_indicator);
vp_guid.setAdapter(new GuidAdapter()); //为ViewPager设置适配器
vp_indicator.setViewPager(vp_guid); //将indicator和ViewPager关联
btn_start = (Button) findViewById(R.id.btn_start);
btn_start.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(GuidActivity.this,MainActvity.class);
startActivity(intent);
finish();
}
});//button这只监听
vp_indicator.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
if(arg0!=imageSrc.length-1){
btn_start.setVisibility(View.INVISIBLE);
}
else{
btn_start.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});//CirclePageIndicator设置监听,这样方便判断按键是否显示
}
class GuidAdapter extends PagerAdapter
{
 
@Override
public int getCount() {
return imageSrc.length;
}
 
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView image=new ImageView(GuidActivity.this);
image.setBackgroundResource(imageSrc[position]);
container.addView(image);
return image;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((ImageView)object);
}
}
}

注:需要修改新手引导界面的图片时,可以修改imageSrc里面的资源文件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值