这篇文章主要介绍了机器人开场动画类完整实现代码,是非常实用的功能,需要的朋友可以参考下
本文所述实例为在机器人中开起开场动画类,已封装好,进行机器人开发的朋友可使用。在这个类中,你可以:设置开场动画的图片资源、返回下一个要启动的活动,显示开场动画、执行耗时的操作、创建启动时的界面布局,设置屏幕的方向。默认是竖屏、开场动画的图片资源类。封装了图片、播放时间、开始时的透明程度等。
具体实现代码如下:
包com。鲁人村。cfu图09。安卓套件。ui;
导入Java。io。可序列化;
导入Java。郎。参考文献。弱引用;
导入Java。util。ArrayList
导入Java。util。列表;
导入安卓。app。活动;
导入安卓。内容。意图;
导入安卓。内容。下午。活动信息;
导入安卓。OS。捆绑;
导入安卓。OS。处理者;
导入安卓。OS。消息;
导入安卓。查看。重力;
导入安卓。查看。查看;
导入安卓。查看。查看组;
导入安卓。查看。查看组。布局参数;
导入安卓。查看。窗户;
导入安卓。查看。窗口管理器;
导入安卓。查看。动画。阿尔法动画;
导入安卓。小部件。框架布局;
导入安卓。小部件。imageview
导入安卓。小部件。imageview。规模类型;
导入com。鲁人村。cfu图09。安卓套件。线程。处理程序工厂;
公共抽象类内向性扩展活动{
私有静态最终字符串标志资源='标志资源
/**
* 后台任务完成的标志。
*/
私有静态最终字节BACKGROUND _ FINISH=0x01
/**
* 前台任务完成的标志。
*/
私有静态最终字节FRONTGROUND _ FINISH=0x10
/**
* 表示要播放开场动画。
*/
private static final int INTRO _ PLAY=0;
/**
* 开场动画的资源。
*/
私有ListIntroImgResource资源;
/**
* 图片背景颜色。默认为白色。
*/
private int mBackgroundColor=0x ffffffff;
/**
*用户界面线程。
*/
私有处理程序多重处理器
/**
* 用来显示动画。
*/
私有ImageView微型图像
/**
* 屏幕方向。
*/
私有信息=活动信息。屏幕_方向_纵向;
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
init();
runOnMainThread();
这个。requestwindowfeature(窗口.特征_编号_标题);
this.getWindow().setFlags(WindowManager .LayoutParams。FLAG _全屏,
窗口管理器布局参数。FLAG _全屏);
这个。setrequesteorientation(mOrientation);
这个。setcontentview(create layout());
setintresources(mResources);
startOnBackground();
show intro();
}
私有void init() {
mResources=new ArrayListIntroImgResource();
mui handler=新ui handler(this);
}
/**
* 设置开场动画的图片资源。
*
* @param资源
* 开场动画的图片资源。
*/
受保护的抽象void setintresources(ListIntroImgResource资源);
/**
* 返回下一个要启动的活动。
*
* @返回下一个要启动的活动。
*/
受保护的抽象类?下一个活动();
/**
* 显示开场动画。
*/
受保护的void showIntro() {
int延迟时间=0;
对于(最终IntroImgResource资源:mResources) {
Message msg=new Message();
msg.what=INTRO _ PLAY
Bundle data=new Bundle();
数据。putserializable(FLAG _ RESOURCE,资源);
msg.setData(数据);
mui处理程序。sendmessage delayed(msg,延迟时间);
延迟时间=资源。玩家时间;
}
mui处理程序。senemptymessagedelayed(front ground _ FINISH,延迟时间);
}
/**
* 执行耗时的操作。
*/
私有void startOnBackground() {
处理器工厂。newhandlerinotherthread(' intro _ BG ').帖子(
新的Runnable() {
@覆盖
公共无效运行(){
runOnBackground();
mui处理程序。senemptymessage(0x 1);
}
});
}
/**
* 创建启动时的界面布局。
*
* @返回返回创建的界面布局。
*/
私有视图createLayout()
框架布局布局=新框架布局(this);
视图组LayoutParams layoutParams=新视图组。布局参数(
布局参数.FILL_PARENT,LayoutParams .FILL _ PARENT);
布局。setlayoutparams(布局参数);
布局。设置背景色(获取背景色());
mIntroImage=new ImageView(this);
框架布局layout params params=新框架布局。布局参数(
框架布局LayoutParams。FILL_PARENT,
框架布局布局参数。FILL _ PARENT);
重力参数=重力。居中;
layout.addView(mIntroImage,params);
返回布局;
}
/**
* 获取图片背景。
*
* @返回
*/
public int getBackgroundColor() {
返回mBackgroundColor
}
/**
* 设置图片背景。
*
* @param backgroundColor
*/
公共空集背景色(int背景色){
这个。mbackgroundcolor=背景色;
}
/**
* 返回屏幕方向。
*
* @返回
*/
public int getmOrientation() {
返回内存;
}
/**
* 设置屏幕的方向。默认是竖屏。
*
* @参数存储
* 屏幕方向活动信息.屏幕_方向_纵向或者是活动信息。
*屏幕方向横向。
*/
public void setmOrientation(int mOrientation){
这个。mOrientation=mOrientation
}
/**
* 在前台中执行的代码。如需对界面进行横屏的重新设置,请此在执行setmOrientation()方法。
*/
受保护的void runOnMainThread() {
}
/**
* 在后台中执行的代码。在此进行比较耗时的操作。
*/
受保护的void runOnBackground() {
}
受保护的静态类UIHandler扩展处理程序{
/**
* 是否需要等待。
*/
private int正在等待=0;
私有WeakReferenceIntroActivity活动;
公共UIHandler(IntroActivity活动){
这个。activity=new weakereferenceintroactivity(活动);
}
公共void句柄消息(Android。OS。消息msg){
if (msg.what==INTRO_PLAY) {
IntroImgResource resource=(IntroImgResource)msg。获取数据()。获取可序列化的(FLAG _ RESOURCE);
阿尔法动画动画=新阿尔法动画(
resource.startAlpha,1f);
动画。设置持续时间(资源。玩家时间);
介绍活动介绍=活动。get();
如果(介绍!=null) {
if (resource.isExpand) {
介绍。微型图像。setscaletype(刻度类型.FIT _ XY);
}否则{
介绍。微型图像。setscaletype(刻度类型.中心);
}
介绍。微型图像。设置图像资源(资源。MRE sid);
介绍。微型图像。开始动画(动画);
}
返回;
}
如果(消息。what==BACKGROUND _ FINISH | |味精。what==front ground _ FINISH){
isWaiting |=msg.what
//当后台或前台的任务未完成时,不执行活动的跳转。
if(正在等待==(BACKGROUND _ FINISH | front ground _ FINISH)){
介绍活动介绍=活动。get();
如果(介绍!=null) {
intro.startActivity(新意图(简介,简介。下一个活动()));
介绍。finish();
}
}
}
};
};
/**
* 开场动画的图片资源类。封装了图片、播放时间、开始时的透明程度。
*
* @作者msdx
*
*/
受保护的类IntroImgResource实现可序列化{
/**
* 序列化身份证。
*/
private static final long serialVersionUID=-2257252088641281804 l;
/**
* 资源图片身份证。
*/
私有int mResId
/**
* 播放时间,单位为毫秒。
*/
私人娱乐时间
/**
* 开始时的透明程度。0-1之间。
*/
私有浮动startAlpha
/**
* 图片是否扩展。
*/
私有布尔值isExpand
/**
* 开场动画资源的构造方法。
*
* @param mResId
* 图片资源的身份证。
* @param playerTime
* 图片资源的播放时间,单位为毫秒。
* @param startAlpha
* 图片资源开始时的透明程度。0-255之间。
*/
public IntroImgResource(int mResId,int playerTime,float startAlpha,boolean isExpand) {
super();
这个。MRE sid=MRE sid
这个。玩家时间=玩家时间;
这个。开始alpha=开始alpha;
这个。is expand=is expand
}
/**
* 获取资源图片身份证。
*
* @返回资源图片身份证。
*/
public int getmResId() {
返回mResId
}
/**
* 设置资源图片身份证。
*
* @param mResId
*要设置的资源图片ID。
*/
public void setmResId(int mResId){
this . MRE sid=MRE sid;
}
/**
*返回资源图片的播放时间。
*
* @返回资源图片的播放时间。
*/
public int getPlayerTime() {
返回playerTime
}
/**
*设置资源图片的播放时间。
*
* @param playerTime
*资源图片的播放时间。
*/
public void setPlayerTime(int player time){
this . player time=player time;
}
/**
*获取资源之初的透明程度。
*
* @返回
*/
公共浮点getStartAlpha() {
返回startAlpha
}
/**
*在开始时设置资源的透明度。
*
* @param startAlpha
*/
public void setStartAlpha(float startAlpha){
this . start alpha=start alpha;
}
/**
*返回是否为图片设置了扩展名。
*
* @返回
*/
公共布尔值isExpand() {
返回isExpand
}
/**
*设置图片是否扩展。
*
* @param isExpand
*如果为真,图片将被拉伸到全屏尺寸显示,否则,将以原始尺寸显示。
*/
public void set expand(boolean is expand){
this . is expand=is expand;
}
}
}
本例配有详细的注释,读者可以在理解程序代码功能的基础上进行个性化修改,打造自己独特的Android开场动画!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。