需求: 第一次进入应用显示欢迎界面, 再进入应用直接跳至主界面
组成:
1 欢迎动画 用来请求网络数据,增强良好的用户体验
2 引导界面 用来显示应用功能,及广告达到推广宣传功能,仅第一次进入应用显示, 通过ViewPager实现
3 主界面
欢迎动画
<pre name="code" class="java">import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
public class SplashActivity extends Activity {
private boolean isFirst = true;//用来标记是否第一次进入应用,默认为true
private boolean b;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
sp = getSharedPreferences("config", MODE_PRIVATE);
b=sp.getBoolean("isFirst", true);
new Handler() {
public void handleMessage(android.os.Message msg) {
if (b) {//如果是第一次进入应用
sp.edit().putBoolean("isFirst", false).commit();//修改标记
startActivity(new Intent(SplashActivity.this, Guide.class));//进入引导界面
} else {//不是第一次进入应用,直接进入主界面
startActivity(new Intent(SplashActivity.this, MainActivity.class));
}
};
}.sendEmptyMessageDelayed(0, 3000);//模拟网络请求数据延时
}
}
引导界面
布局:viewpager+button button在最后一个pager显示,点击进入主界面
<?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" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="30dp"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:text="开始体验"
android:textSize="20sp"
android:visibility="gone" />
</RelativeLayout>
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
public class Guide extends Activity {
ArrayList<ImageView> list=new ArrayList<ImageView>();
private Button bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_guide);
bt = (Button) findViewById(R.id.bt);
ViewPager pager = (ViewPager) findViewById(R.id.pager);
ImageView imageView1 = new ImageView(getBaseContext());
imageView1.setBackgroundResource(R.drawable.guide_1);
ImageView imageView2 = new ImageView(getBaseContext());
imageView2.setBackgroundResource(R.drawable.guide_2);
ImageView imageView3 = new ImageView(getBaseContext());
imageView3.setBackgroundResource(R.drawable.guide_3);
list.add(imageView1);
list.add(imageView2);
list.add(imageView3);
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(Guide.this,MainActivity.class));
finish();
}
});
pager.setAdapter(new MyAdapter());
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
if(arg0==2){
bt.setVisibility(View.VISIBLE);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO Auto-generated method stub
return arg0==arg1;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
((ViewPager)container).addView(list.get(position));
return list.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
}
}