SplashView的用法及源码解析
来源:互联网 发布:php微信二次开发教程 编辑:程序博客网 时间:2024/06/06 00:24
YFAndroidLibs之SplshView的用法及源码解析
关于(About)
SplashView故名思意,是指进入应用时的SPlash(闪屏),效果图如下:
设计思路及主要接口(Features)
该SplashView主要的技术点有:
1.自定义declare-styleable
<declare-styleable name = "SplashView"> <attr format="integer" name="time"/> <attr format = "reference" name = "Bg" /> <attr format = "reference" name = "txt_style" /> </declare-styleable>
从而实现黑盒操作,可直接在xml中定义属性。
2.继承CountDownTimer,实现时间递减:
class TimeCount extends CountDownTimer { /** * @param millisInFuture * @param countDownInterval */ public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); // TODO Auto-generated constructor stub } @Override public void onTick(long millisUntilFinished) { // TODO Auto-generated method stub time.setText("("+(millisUntilFinished/1000)+"s)"); } @Override public void onFinish() { // TODO Auto-generated method stub //计时完成 time.setText("("+0+"s)"); //跳转操作 onFinishListener.setFinish(); }}
3.自定义完成监听器接口:OnFinishListener
/** *设置读秒完成后的操作 *@author yihui *@version 1.0 */public interface OnFinishListener {void setFinish();}
4.设置直接点击跳过事件:
/** * 设置点击事件 */public void setJumpClick(OnClickListener listener){ time_bt.setOnClickListener(listener);}
主要暴露接口和设置:
- 设置闪屏图片;
- 设置持续时间;
- 继承点击跳过监听器;
- 继承读秒完成监听器,处理读秒完成后的事件跳转;
- 设置界面字体样式。
- 其他还在扩展中。。
使用
导入包:
详见我的另外一篇博文:http://blog.csdn.net/u011072613/article/details/53889596
在布局文件中添加
<com.example.yf_library.splash.SplashView android:id="@+id/sp_view" android:layout_width="match_parent" android:layout_height="match_parent" app:time="6000" app:Bg="@drawable/guide2" app:txt_style="@drawable/flag_01" />
记得要在根布局下添加:
xmlns:app="http://schemas.android.com/apk/res/你的包名"
代码设置:
1.设置背闪屏图片:
sp_view.setBg(getDrawable(R.drawable.splash));
当然你也可以在布局中设置:
app:Bg="@drawable/splash"
2.持续时间设置
sp_view.setTime(t,new OnFinishListener() { @Override public void setFinish() { // TODO Auto-generated method stub //在此处设置读秒完成后的操作 Intent mIntent=new Intent(getApplicationContext(),CommonActivity.class); startActivity(mIntent); } });
或者这样:
app:time="6000"
此时你可以省略setTime方法中的time,转而调用:
sp_view.setTime(new OnFinishListener() { @Override public void setFinish() { // TODO Auto-generated method stub Intent mIntent=new Intent(getApplicationContext(),CommonActivity.class); startActivity(mIntent); } });
如果你既没有在xml布局中设置时间,也没有在代码中设置时间,那么系统将会调用默认的闪屏时间(6秒)。
3.像大多数闪屏一样,本SplashView也提供了,直接跳转监听器
sp_view.setJumpClick(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //可以在此处设置跳转 Toast.makeText(SpalshViewActivity.this, "点击跳过", 1).show();; Intent mIntent=new Intent(getApplicationContext(),CommonActivity.class); startActivity(mIntent); } });
4.如果你觉得“跳过:(6s)”的字体样式不好看,提供了setTxtStyle:
/* * 设置字体样式 */@SuppressLint("NewApi")public void setTxtStyle(int resId){ time_ll.setBackgroundResource(resId);}
也可以通过:
/**
* 设置字体背景
*/
@SuppressLint(“NewApi”)
public void setTextBg(int drawable){
time_ll.setBackgroundResource(drawable);
}
设置字体背景。
大概的方法就这么多,Splash相对简单,但是在一个Android程序中,承担的任务比较中,基本上每次退出重新进入都会能看到它,所以关键是性能。
该SplashView后期还会继续扩展。。。。(比如添加多个动画界面,多个连接界面等),敬请期待。
- SplashView的用法及源码解析
- GuidePageView的用法及源码解析
- BannerVIew的用法及源码解析
- TagView的用法及源码解析
- AsyncTask 用法及源码解析
- Picasso 用法及源码解析
- ArrayList用法及源码解析
- LinkedList用法及源码解析
- HashMap用法及源码解析
- Struts2国际化用法及源码解析
- CircleImageView用法及源码解析(雷惊风)
- redux 及 react-redux基本用法及源码解析
- ThreadLocal类的用法与源码解析
- 使用VS2013为基于对话框的程序加SplashView
- 利用属性动画实现一个不一样的SplashView
- ViewPager的小知识点及源码解析
- java解析properties的方法及用法
- ThinkAjax的用法解析及实例
- Java-逃逸分析
- Linux下VFP NEON浮点编译
- 青出于红——《第一行代码(第2版)》
- 《C++ Primer Plus(第六版)》(27)(第十三章 类继承 编程题答案)
- logback使用详解
- SplashView的用法及源码解析
- 解决android Button 自带阴影的效果
- Android自定义View--用ViewGroup打造一个3D堆叠卡片容器
- linux学习笔记--crontab命令
- SymNet:scalable symbolic execution for modernnetworks论文
- JS操作json对象key、value
- 我的故事
- 菜鸟第一篇
- php 学习之面向对象