android软件引导界面
2015-12-27 17:09
441 查看
软件的引导界面
·大多数软件在安装成功后的第一次运行,或版本更新后的第一次运行时
会使用3-5张图片对软件的使用,版本更新作简单的介绍或演示,这样的界面称之为“引导界面”
·在切换显示到最后一张图片时,点击按钮即可进入软件的主界面,且以后再次运行该应用程序时都不再显示引导界面
案例相关知识点包括:
·手势判断
·ImageSwitcher控件;
·动画;
·SharedPreferences
Guide的xml布局界面:
GuideActivity.java
切换动画效果实现xml
right2left_in
right2left_out.xml
·大多数软件在安装成功后的第一次运行,或版本更新后的第一次运行时
会使用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>
相关文章推荐
- Android开发和測试实践 - 接入友盟统计
- android之旅12 activity之间的跳转与生命周期
- Android M 新的运行时权限开发者需要知道的一切
- android偏好设置
- Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法
- Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
- Android用TabLayout实现类似网易选项卡动态滑动效果
- Android 中 Intent.Action
- 使用Bmob ---数据服务(提交数据,查询数据)
- Android 系统名字、版本、API level的对应关系
- Android 报错:Error: Apostrophe not preceded by \ (in ... ...)
- 关于『65535问题』的一点研究与思考
- Android中MediaButtonReceiver广播监听器的机制分析
- Twitter License for Android
- Android给控件自定义边框和阴影
- android SharedPreferences加密(高级) (AES+base64+PBE)
- Android教程之MediaStore
- Android handler 可能会造成内存泄露
- 在android应用上直接访问数据库
- android material design 相关使用指导