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

Android VR Player(全景视频播放器) [5]:简单的欢迎界面

2017-05-31 10:55 501 查看

Android VR Player(全景视频播放器) [5]:简单的欢迎界面

欢迎界面

在继续下一部分,即视频列表实现的介绍前,分享一下简单的欢迎界面的实现。一来是可以整合一下前面说的侧滑菜单和底部导航,二来是欢迎界面用到的子线程和TimerTask等知识是后续的部分所需的,这里就先提前说一下啦。

欢迎界面虽然名曰欢迎,其实并没有太大的“欢迎”意义,一般用户希望的是赶紧进入主页面。但对于应用设计开发人员来说,欢迎页面可以用来展示应用的版本,品牌标识等,可以起到强调品牌的作用,当然也可以把广告投放在这里。欢迎界面最大的用处是,在用户未进入主界面前加载好一些资源,比如网络资源等,这样用户进入主界面时就不用再等待资源加载,从而提升用户体验。需要注意的是欢迎界面和引导页的不同,引导页一般是安装后首次使用时才出现,用来展示一些应用的功能用法,更新的特性等等。

简单实现

欢迎界面的实质就是让用户在进入主界面前等几秒钟,当时有过Android开发经历的同学都知道,一旦我们的应用失去响应5秒以上,就会出现ANR(Application Not Responding)错误,导致应用被系统终止。所以,不能直接用sleep去让主线程“睡”上几秒钟,而是需要在子线程中去做这件事。了解了这一点,实现的思路就很清晰了:首先有个WelcomeActivity,用来展示欢迎界面;然后在WelcomeActivity中开启一个子线程;子线程要做的任务很简单,即是在启动应用几秒后,开启MainActivity,进入主界面。下面就一步步说明如何实现这个思路。

创建WelcomeActivity

这个应该很容易,创建一个WelcomeActivity,并设计它的布局。需要注意的是,因为WelcomeActivity现在成为了应用启动的第一个Activity,所以需要在AndriodManifest配置文件中将WelcomeActivity设置为启动Activity。

public class WelcomeActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
}
}


(WelcomeActivity.java代码片段)

WelcomeActivity的代码现在很简单,只是设置了这个activity的布局,后面我们会在这个activity中添加其他的一些代码。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/welcomeLayout">

<!-- picture from : http://baike.baidu.com -->

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/welcome" />

</FrameLayout>


(activity_welcome.xml代码片段)

WelcomeActivity的布局很简单,展示一张图片,当然也可以复杂些,比如用个TextView来展示版本等。

在WelcomeActivity中创建子进程

可以用TimerTask来实现停顿几秒后来进入主界面,当然也可以直接用Thread来创建一个子线程。

用TimerTask:

Timer mTimer = new Timer();
TimerTask mTimerTask = new TimerTask() {
@Override
public void run() {
//在run方法中跳转到mainActivity
}
};
mTimer.schedule(mTimerTask,5000);


用Thread:

Thread startThread =new Thread(){
public void run(){
try{
sleep(5000);
}catch(Exception e){
e.printStackTrace();
}
finally {
//在finally中跳转到MainActivity
}
}

};

startThread.start();


前面说过欢迎界面的最大用处是提前加载好一些资源,提升用户的使用体验,这部分的工作就可以通过在WelcomeActivity中创建的子进程中去完成。

进入MainActivity

进入MainActivity涉及到Activity之间的跳转,一般的写法为:

Intent intent = new Intent(WelcomeActivity.this, MainActivity.class);
startActivity(intent);
finish();


我们先构建一个意图,这个“意图”用WelcomeActivity.this作为上下文,用MainActivity.class 作为目标Activity。很明显我们的“意图”是用WelcomeActivity.this作为上下文来启动MainActivity。这样的意图是显式意图;另外一种方式是隐式意图,这里不再说明。startActivity函数根据指定的意图来启动一个Activity,finish()函数表示结束当前的Activity,即WelcomeActivity。针对一般的Activity界面跳转,也可以把上面的这段代码封装一下,

public static void actionStart(Context context, String arg){
Intent intent  = new Intent(context,MainActivity.class);
intent.putExtra("arg",arg);
context.startActivity(intent);
}


把这个静态方法提供给其他类来使用,这样做会比较规范,特别是需要在类和类之间传递一些参数时就显得很实用了(看了第一行代码后学到的)。比如在WelcomeActivity中你可以用这样的方式来启动MainActivity

MainActivity.actionStart(WelcomeActivity.this,"hello main activity");


我们再为这个这个欢迎界面添加一点动画效果

AlphaAnimation welcomeAnimation = new AlphaAnimation(1.0f,0.1f);
welcomeAnimation.setDuration(5000);
welcomeLayout.setAnimation(welcomeAnimation);


这个动画实现一种渐淡的效果。

编辑AndriodManifest

最后别忘了修改AndriodManifest配置文件,首先注册我们创建的WelcomeActivity,然后让它成为启动Activity。

<activity android:name=".WelcomeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity android:name=".MainActivity">
</activity>


运行调试



调试运行,暂时没有太大的问题,上方的ActionBar为了美观可以考虑去掉。

整合

现在可以将前面的侧滑菜单以及底部导航部分整合到一起,再加上WelcomeActivity,就算是一个半成品的界面设计了。

测试源码

链接: https://pan.baidu.com/s/1c1QG7V6 密码: 9hfw

Reference

Android实现进入界面时,加载欢迎界面

Android写一个简单的欢迎界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: