1.涉及Android知识点:
1.涉及Android知识点:
ViewPager组件、Handler机制、SharedPreferences。
2.开发实践:
a.布局文件设计。
第一个引导界面one.xml,另外两个布局文件类似。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/guide_1" /></LinearLayout>
引导主界面 guide.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ImageViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/guide_1" /></LinearLayout>
<?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.ViewPagerandroid:id="@+id/viewpager"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#00000000" ></android.support.v4.view.ViewPager><LinearLayoutandroid:id="@+id/ll"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:gravity="center_horizontal"android:orientation="horizontal" ><ImageViewandroid:id="@+id/iv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/login_point_selected" /><ImageViewandroid:id="@+id/iv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/login_point" /><ImageViewandroid:id="@+id/iv3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/login_point" /></LinearLayout></RelativeLayout>
b.Activity设计。
引导界面主类Guide.java
package com.viewpagerdemo;import java.util.ArrayList;
import java.util.List;import com.jikexueyuan.viewpagerdemo.R;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;public class Guide extends Activity implements OnPageChangeListener {private ViewPager viewPager;private ViewPagerAdapter viewPagerAdapter;private List<View> views;private ImageView[] dots;private int[] ids = { R.id.iv1, R.id.iv2, R.id.iv3 };private Button start_btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.guide);initViews();initDots();}private void initViews() {LayoutInflater inflater = LayoutInflater.from(this);views = new ArrayList<View>();views.add(inflater.inflate(R.layout.one, null));views.add(inflater.inflate(R.layout.two, null));views.add(inflater.inflate(R.layout.three, null));viewPagerAdapter = new ViewPagerAdapter(views, this);viewPager = (ViewPager) findViewById(R.id.viewpager);viewPager.setAdapter(viewPagerAdapter);start_btn = (Button) views.get(2).findViewById(R.id.start_btn);start_btn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {Intent i = new Intent(Guide.this, MainActivity.class);startActivity(i);finish();}});viewPager.setOnPageChangeListener(this);}private void initDots() {dots = new ImageView[views.size()];for (int i = 0; i < views.size(); i++) {dots[i] = (ImageView) findViewById(ids[i]);}}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageSelected(int arg0) {for (int i = 0; i < ids.length; i++) {if (arg0 == i) {dots[i].setImageResource(R.drawable.login_point_selected);} else {dots[i].setImageResource(R.drawable.login_point);}}}}
ViewPager的适配器类ViewPagerAdapter.java
package com.viewpagerdemo;import java.util.List;import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;public class ViewPagerAdapter extends PagerAdapter {private List<View> views;private Context context;public ViewPagerAdapter(List<View> views, Context context) {this.views = views;this.context = context;}@Overridepublic void destroyItem(View container, int position, Object object) {((ViewPager) container).removeView(views.get(position));}@Overridepublic Object instantiateItem(View container, int position) {((ViewPager) container).addView(views.get(position));return views.get(position);}@Overridepublic int getCount() {return views.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return (arg0 == arg1);}}
c.欢迎界面设计和存储首次使用程序标记类
欢迎界面类WelcomeAct.java
package com.viewpagerdemo;import com.jikexueyuan.viewpagerdemo.R;
import com.viewpagerdemo.util.Config;import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;public class WelcomeAct extends Activity {private boolean isFirstIn = false;private static final int TIME = 2000;private static final int GO_HOME = 1000;private static final int GO_GUIDE = 1001;private Config config;private Handler mHandler = new Handler(){public void handleMessage(android.os.Message msg) {switch (msg.what) {case GO_HOME:goHome();break;case GO_GUIDE:goGuide();break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.welcome);config =new Config(this);init();}private void init(){isFirstIn = config.getBoolean("isFirstIn");if (!isFirstIn) {mHandler.sendEmptyMessageDelayed(GO_HOME, TIME);}else{mHandler.sendEmptyMessageDelayed(GO_GUIDE, TIME);config.putBoolean("isFirstIn", false);}}private void goHome(){Intent i = new Intent(WelcomeAct.this,MainActivity.class);startActivity(i);finish();}private void goGuide(){Intent i = new Intent(WelcomeAct.this,Guide.class);startActivity(i);finish();}}
存储数据辅助类Config.java
package com.viewpagerdemo.util;import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;public class Config {private static final String CONFIG_NAME = "setting";private SharedPreferences sharedPreferences;private Editor editor ;public Config(Context context){sharedPreferences = context.getSharedPreferences(CONFIG_NAME, Context.MODE_PRIVATE);editor = sharedPreferences.edit();}public void putString(String key,String value){editor.putString(key, value);editor.commit();}public String getString(String key){return sharedPreferences.getString(key, "");}public void putBoolean(String key,boolean value){editor.putBoolean(key, value);editor.commit();}public boolean getBoolean(String key){return sharedPreferences.getBoolean(key, true);}
}
d.AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.jikexueyuan.viewpagerdemo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="14"android:targetSdkVersion="14" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.viewpagerdemo.MainActivity"android:label="@string/app_name" ></activity><activity android:name="com.viewpagerdemo.Guide" ></activity><activity android:name="com.viewpagerdemo.WelcomeAct" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
大功告成,源码下载地址:http://download.csdn.net/detail/caihuajian235/8448343