您的位置:首页 > 移动开发 > Android开发

android软件引导界面

2015-12-27 17:09 441 查看
软件的引导界面

·大多数软件在安装成功后的第一次运行,或版本更新后的第一次运行时

会使用3-5张图片对软件的使用,版本更新作简单的介绍或演示,这样的界面称之为“引导界面”

·在切换显示到最后一张图片时,点击按钮即可进入软件的主界面,且以后再次运行该应用程序时都不再显示引导界面

案例相关知识点包括:

·手势判断

·ImageSwitcher控件;

·动画;

·SharedPreferences

Guide的xml布局界面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".GuideActivity" >

    <ImageSwitcher
        android:id="@+id/imageSwitcher"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true" >
    </ImageSwitcher>

    <Button
        android:id="@+id/btn_go_to_main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerInParent="true"
        android:layout_marginBottom="50dp"
        android:onClick="startMain"
        android:text="进入主界面"
        android:visibility="gone" />

</RelativeLayout>


GuideActivity.java

package com.example;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Point;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.ViewSwitcher.ViewFactory;

public class GuideActivity extends Activity {
	private ImageSwitcher mImageSwitcher;
	private int[] mImgResIds;
	private int mCurrentImageIndx;
	private Point mDownPoint = new Point();
	
	private Animation mRight2LeftIn,mRight2leftOut;
	
	private String filename = "config";
	private String firstRunning = "true";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_guide);
		SharedPreferences sp = getSharedPreferences(filename, MODE_PRIVATE);
		String config = sp.getString(firstRunning, null);
		if(config != null){
			Intent intent = new Intent(this, MainActivity.class);
			startActivity(intent);
			finish();
		}
		mImageSwitcher = (ImageSwitcher) findViewById(R.id.imageSwitcher);
		mImgResIds = new int[]{
				R.drawable.image01,
				R.drawable.image02,
				R.drawable.image03,
				R.drawable.image04

		};

		/*
		 * 给使用setFactoru给mImageSwitcher添加两个子级控件
		 */

		mImageSwitcher.setFactory(new ViewFactory() {

			@Override
			public View makeView() {
				// TODO Auto-generated method stub
				ImageView v = new ImageView(getApplicationContext());

				//这里是内部类所以不能用this 要用getApplicationContext()
				v.setScaleType(ScaleType.FIT_XY);
				v.setImageResource(mImgResIds[mCurrentImageIndx]);

				return v;
			}
		});
		mRight2LeftIn = AnimationUtils.loadAnimation(this, R.anim.right2left_in);
		mRight2leftOut = AnimationUtils.loadAnimation(this, R.anim.right2left_out);
	}
	/**
	 * 判断手势
	 */
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			mDownPoint.x = (int) event.getX();
			break;
		case MotionEvent.ACTION_UP:
			if(event.getX() - mDownPoint.x >10){
				//left ->right :previous

			}
			if(mDownPoint.x - event.getX() >10){
				// right->left :next
				if(mCurrentImageIndx < mImgResIds.length - 1){
					mCurrentImageIndx++;
					((ImageView)mImageSwitcher.getNextView()).setImageResource(mImgResIds[mCurrentImageIndx]);
					mImageSwitcher.setInAnimation(mRight2LeftIn);
					mImageSwitcher.setOutAnimation(mRight2leftOut);
					mImageSwitcher.showNext();
					/*
					 * 判断如果到最后一张图片就显示按钮
					 * */
					if(mCurrentImageIndx == mImgResIds.length - 1){
						findViewById(R.id.btn_go_to_main).setVisibility(View.VISIBLE);
					}
				}
			}
			break;

		default:
			break;
		}
		return super.onTouchEvent(event);
	}
	public void startMain(View v){
		SharedPreferences sp = getSharedPreferences(filename, MODE_PRIVATE);
		Editor editor = sp.edit();
		editor.putString(firstRunning, "false");
		editor.commit();
		Intent intent = new Intent(this,MainActivity.class);
		startActivity(intent);
		finish();//引导界面的Activity就会退出,回退栈中也会清除该Activity,点击回退按钮也不会回退到引导界面
	}

}


切换动画效果实现xml

right2left_in

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="1500"
        android:fromXDelta="100%"
        android:toXDelta="0" />

</set>


right2left_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 出场动画 1.5秒 -->
    <translate
        android:duration="1500"
        android:fromXDelta="0"
        android:toXDelta="-100%" />

</set>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: