- 浏览: 260457 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
sunshine_bean:
第四行改进下URL=`svn info |grep &quo ...
linux判断是否需要svn up的脚本 -
leokelly001:
设置请求头,user-agent就行了
android使用豆瓣API出现500错误及解决方法 -
貌似掉线:
txy7121 写道HandlerFactory和AntiCo ...
大谈android安全2——Activity劫持的防范程序 -
txy7121:
HandlerFactory和AntiConstants这两个 ...
大谈android安全2——Activity劫持的防范程序 -
貌似掉线:
hyc_willie 写道关注着你的框架,希望能见到它的发布 ...
androidkit——Android开发框架
本文及代码原创,转载请注明出处:http://maosidiaoxian.iteye.com/blog/1682616
许多程序在开启的时候都会有一个LOGO的展示,然后才进入。参考一个师兄的写法,我自己也对这样的行为进行了封装。代码如下:
使用时继承上面的类,主要重写里面的以下两个抽象方法:
1、nextActivity(),在这里返回下一个Activity。
2、setIntroResources(List<IntroImgResource> resources),在这里添加要展示的图片资源(包括展示时间)。这里仅支持图片,不支持动画、影片等。展示的效果是渐变显示。
如果有耗时的操作,重写runOnBackground()方法,它会在一个非UI线程中运行。
如果要进行横屏等的设置,重写runOnMainThread()方法,它在主线程中运行。设置横屏等行为,请使用代码中提供的方法。
以上代码来自我的开源项目cfuture-androidkit,目前托管在谷歌上,网址为:http://code.google.com/p/cfuture-androidkit/
许多程序在开启的时候都会有一个LOGO的展示,然后才进入。参考一个师兄的写法,我自己也对这样的行为进行了封装。代码如下:
/* * @(#)IntroActivity.java Project:com.sinaapp.msdxblog.androidkit * Date:2012-9-10 * * Copyright (c) 2011 CFuture09, Institute of Software, * Guangdong Ocean University, Zhanjiang, GuangDong, China. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.sinaapp.msdxblog.androidkit.ui; import java.io.Serializable; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.content.Intent; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; import android.view.animation.AlphaAnimation; import android.widget.FrameLayout; import android.widget.ImageView; import com.sinaapp.msdxblog.androidkit.thread.HandlerFactory; /** * @author Geek_Soledad (66704238@51uc.com) */ public abstract class IntroActivity extends Activity { private static final String FLAG_RESOURCE = "FLAG_RESOURCE"; /** * 后台任务完成的标志。 */ private static final int BACKGROUND_FINISH = 0x01; /** * 前台任务完成的标志。 */ private static final int FRONTGROUND_FINISH = 0x10; /** * 表示要播放开场动画。 */ private static final int INTRO_PLAY = 0; /** * 开场动画的资源。 */ private List<IntroImgResource> mResources = new ArrayList<IntroImgResource>(); /** * 图片背景颜色。默认为白色。 */ private int mBackgroundColor = 0xFFFFFFFF; /** * UI线程。 */ private Handler mUiHandler; /** * 用来显示动画。 */ private ImageView mIntroImage; /** * 屏幕方向。 */ private int mOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); runOnMainThread(); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); this.setRequestedOrientation(mOrientation); this.setContentView(createLayout()); setIntroResources(mResources); startOnBackground(); showIntro(); } private void init() { mUiHandler = new UIHandler(this); } /** * 设置开场动画的图片资源。 * * @param resources * 开场动画的图片资源。 */ protected abstract void setIntroResources(List<IntroImgResource> resources); /** * 返回下一个要启动的Activity。 * * @return 下一个要启动的Activity。 */ protected abstract Class<?> nextActivity(); /** * 显示开场动画。 */ protected void showIntro() { int delayTime = 0; for (final IntroImgResource resource : mResources) { Message msg = new Message(); msg.what = INTRO_PLAY; Bundle data = new Bundle(); data.putSerializable(FLAG_RESOURCE, resource); msg.setData(data); mUiHandler.sendMessageDelayed(msg, delayTime); delayTime += resource.playerTime; } mUiHandler.sendEmptyMessageDelayed(FRONTGROUND_FINISH, delayTime); } /** * 执行耗时的操作。 */ private void startOnBackground() { HandlerFactory.getNewHandlerInOtherThread("intro_bg").post( new Runnable() { @Override public void run() { runOnBackground(); mUiHandler.sendEmptyMessage(0x1); } }); } /** * 创建启动时的界面Layout。 * * @return 返回创建的界面Layout. */ private View createLayout() { FrameLayout layout = new FrameLayout(this); ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); layout.setLayoutParams(layoutParams); layout.setBackgroundColor(getBackgroundColor()); mIntroImage = new ImageView(this); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER; layout.addView(mIntroImage, params); return layout; } /** * 获取图片背景。 * * @return */ public int getBackgroundColor() { return mBackgroundColor; } /** * 设置图片背景。 * * @param backgroundColor */ public void setBackgroundColor(int backgroundColor) { this.mBackgroundColor = backgroundColor; } /** * 返回屏幕方向。 * * @return */ public int getmOrientation() { return mOrientation; } /** * 设置屏幕的方向。默认是竖屏。 * * @param mOrientation * 屏幕方向。ActivityInfo.SCREEN_ORIENTATION_PORTRAIT或者是ActivityInfo. * SCREEN_ORIENTATION_LANDSCAPE。 */ public void setmOrientation(int mOrientation) { this.mOrientation = mOrientation; } /** * 在前台中执行的代码。如需对界面进行横屏的重新设置,请此在执行setmOrientation()方法。 */ protected void runOnMainThread() { } /** * 在后台中执行的代码。在此进行比较耗时的操作。 */ protected void runOnBackground() { } protected static class UIHandler extends Handler { /** * 是否需要等待。 */ private int isWaiting = 0; private WeakReference<IntroActivity> activity; public UIHandler(IntroActivity activity ){ this.activity = new WeakReference<IntroActivity>(activity); } public void handleMessage(android.os.Message msg) { if (msg.what == INTRO_PLAY) { IntroImgResource resource = (IntroImgResource) msg.getData() .getSerializable(FLAG_RESOURCE); AlphaAnimation animation = new AlphaAnimation( resource.startAlpha, 1f); animation.setDuration(resource.playerTime); activity.get().mIntroImage.setImageResource(resource.mResId); activity.get().mIntroImage.startAnimation(animation); return; } if (msg.what == BACKGROUND_FINISH || msg.what == FRONTGROUND_FINISH) { isWaiting |= msg.what; // 当后台或前台的任务未完成时,不执行Activity的跳转。 if (isWaiting == (BACKGROUND_FINISH | FRONTGROUND_FINISH)) { activity.get().startActivity(new Intent(activity.get(), activity.get().nextActivity())); activity.get().finish(); return; } } }; }; /** * 开场动画的图片资源类。封装了图片、播放时间、开始时的透明程度。 * * @author msdx * */ protected class IntroImgResource implements Serializable { /** * 序列化ID。 */ private static final long serialVersionUID = -2257252088641281804L; /** * 资源图片ID. */ private int mResId; /** * 播放时间,单位为毫秒。 */ private int playerTime; /** * 开始时的透明程度。0-1之间。 */ private float startAlpha; /** * 开场动画资源的构造方法。 * * @param mResId * 图片资源的ID。 * @param playerTime * 图片资源的播放时间,单位为毫秒。。 * @param startAlpha * 图片资源开始时的透明程度。0-255之间。 */ public IntroImgResource(int mResId, int playerTime, float startAlpha) { super(); this.mResId = mResId; this.playerTime = playerTime; this.startAlpha = startAlpha; } /** * 获取资源图片ID。 * * @return 资源图片ID。 */ public int getmResId() { return mResId; } /** * 设置资源图片ID. * * @param mResId * 要设置的资源图片ID. */ public void setmResId(int mResId) { this.mResId = mResId; } /** * 返回资源图片的播放时间。 * * @return 资源图片的播放时间。 */ public int getPlayerTime() { return playerTime; } /** * 设置资源图片的播放时间。 * * @param playerTime * 资源图片的播放时间。 */ public void setPlayerTime(int playerTime) { this.playerTime = playerTime; } /** * 得到资源开始时的透明程度。 * * @return */ public float getStartAlpha() { return startAlpha; } /** * 设置资源开始时的透明程度。 * * @param startAlpha */ public void setStartAlpha(float startAlpha) { this.startAlpha = startAlpha; } } }
使用时继承上面的类,主要重写里面的以下两个抽象方法:
1、nextActivity(),在这里返回下一个Activity。
2、setIntroResources(List<IntroImgResource> resources),在这里添加要展示的图片资源(包括展示时间)。这里仅支持图片,不支持动画、影片等。展示的效果是渐变显示。
如果有耗时的操作,重写runOnBackground()方法,它会在一个非UI线程中运行。
如果要进行横屏等的设置,重写runOnMainThread()方法,它在主线程中运行。设置横屏等行为,请使用代码中提供的方法。
以上代码来自我的开源项目cfuture-androidkit,目前托管在谷歌上,网址为:http://code.google.com/p/cfuture-androidkit/
发表评论
-
利用电脑玩Android版“天天连萌”刷高分(四)——模拟按键及程序优化
2014-01-22 00:14 1712这一系列文章,没想到从去年10月份以来,写了三篇我就忘了写了, ... -
利用电脑玩Android版“天天连萌”刷高分(三)——连连看消除搜索
2013-10-29 17:02 1183差点忘了写接下来的这两篇博客了,这篇如果接不上上一篇,请勿见怪 ... -
利用电脑玩Android版“天天连萌”刷高分(二)——图像识别
2013-10-20 15:44 1540上一篇只是提到了在PC端利用android sdk里面的工具进 ... -
利用电脑玩Android版“天天连萌”刷高分(一)——截图
2013-10-20 11:22 3412这几周微信游戏“天天 ... -
在PC端进行android截屏的多种方法
2013-10-18 11:01 3597昨晚意外的发现在PC端进行截屏的方法相当多,在android ... -
近期计划
2013-09-01 20:02 1235在上一篇(http://maosidiao ... -
Android开源游戏引擎之Angle(二)——开始前的准备
2013-09-01 12:04 2509在上一篇博客(http://mao ... -
Android开源游戏引擎之Angle(一)——概述
2013-08-31 19:26 6045Angle是一个Android平台上 ... -
设置tabWidget标题的字体大小及颜色
2013-03-27 13:47 9462/* * @(#)TextAppearenceUtil ... -
桌面小部件AppWidget的使用
2013-02-23 13:49 1726在android平台中,显示在HOME界面的一些挂件,即桌面小 ... -
android使用actionbar与fragment
2013-01-16 23:12 2294android使用actionbar中的tab,及fragme ... -
android使用豆瓣API出现500错误及解决方法
2013-01-10 18:56 6291为团队做一个图书管理的应用,涉及到扫描ISBN然后查询图书信息 ... -
进入程序的动画IntroActivity增强版
2012-12-11 10:19 1474这是对上一次谈到的android程序进入前的动画的封装(详见: ... -
androidkit发布0.5.3alpha版
2012-12-07 09:26 1316androidkit是一个用于android应用层开发的工具包 ... -
使用Zxing及豆瓣API
2012-12-06 20:30 2399本文原创,转载请注明原文地址:http://maosidiao ... -
androidkit——减少android开发代码的工具包
2012-11-16 22:25 2227androidkit是我学android开发以来,慢慢在封装的 ... -
android开发知识点1——按钮效果
2012-10-30 15:15 2331android中控件的背景或ImageView、ImageBu ... -
android颜色选择器
2012-09-24 13:39 3380前段时间想到要封装一个颜色选择器的类,查询后知道谷歌api d ... -
androidt程序文字锯齿
2012-09-24 00:51 1286刚才才发现,在开发android程序时,如果在manifest ... -
大谈android安全2——Activity劫持的防范程序
2012-09-23 23:13 9416本文原创,转载请注明出处: http://maosidiaox ...
相关推荐
Umi-OCR-main.zip
基于springboot+Web的毕业设计选题系统源码数据库文档.zip
基于springboot校外兼职教师考勤管理系统源码数据库文档.zip
58商铺全新UI试客试用平台网站源码
基于springboot大学生就业信息管理系统源码数据库文档.zip
基于SpringBoot的口腔诊所系统源码数据库文档.zip
数据存放网盘,txt文件内包含下载链接及提取码,永久有效。失效会第一时间进行补充。样例数据及详细介绍参见文章:https://blog.csdn.net/T0620514/article/details/143956923
3-240P2162218.zip
网络安全 基于Qt创建的Linux系统下的浏览器.zip
C++ 类和对象:多态-练习题目2(制作咖啡和茶叶)
基于springboot+J2EE在线项目管理与任务分配中的应用源码数据库文档.zip
简介本项目提供了一个在51单片机上运行的简单操作系统,旨在帮助学习者深入理解操作系统的基本原理和任务调度机制。该操作系统通过汇编和C语言编写,实现了任务调度、中断处理等核心功能,并提供了详细的源代码和注释,方便学习和实践。
本文将深度卷积神经网络(CNN)设计实现一个复杂结构的生成模型,旨在通过多阶段的编码器-解码器结构,能够有效地将灰度图像转换为彩色图像。最后,本文将实现一个简单的Web应用,用户可以通过上传灰度图像,应用会使用预训练的Caffe模型对其进行颜色化,并将结果返回给用户。 1.模型设计:模型由多个卷积层、ReLU激活函数和批归一化层组成,通过前向传播函数将输入的灰度图像(L通道)转换为彩色图像(ab通道)。如果指定了 pretrained=True,则会自动下载并加载预训练的模型权重。 2. 系统通过Flask框架提供了一个Web应用,用户可以上传灰度图像,系统会自动将其转换为彩色图像,并在网页上显示结果。整个过程包括文件验证、图像处理、颜色化预测和结果展示,具有较高的实用性和用户体验。
一个JAVA图形化的、联网的五子棋游戏.zip javaweb
KWDB 是一款面向 【AIoT 场景】的【分布式多模数据库】,支持在同一实例同时建立时序库和关系库并融合处理多模数据,具备千万级设备接入、百万级数据秒级写入、亿级数据秒级读取等时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。
页面数量:7页 网页主题:网站模板、酒店网站模板、官方网站模板 网页页面:首页、关于我们、相关服务、服务详情、在线博客、博客详情、在线留言 页面实现元素:加载动画、滚动加载、主题切换、导航栏 、轮播图、图文列表、图片切换、 文字列表、 按钮悬停、图片悬停、表单 实现技术:HTML、CSS 、JQuery 源码样式及js文件均分开存放,所有内容仅供初学者学习参考
内容概要:本文档提供了详细的 Neo4j 安装与配置指南,涵盖 Windows、Linux 和 Mac 系统的安装步骤。具体包括下载、安装、启动服务、修改配置文件(如端口配置、远程访问和内存限制)、设置管理员密码以及基本的 Cypher 查询语言使用方法。同时,还提供了一些常见问题及其解决方案。 适合人群:数据库管理员、软件开发人员、系统管理员。 使用场景及目标:①帮助初学者快速掌握 Neo4j 的安装与配置;②适用于需要搭建和使用图数据库的项目;③为已有用户解决常见问题。 其他说明:本文档不仅包含了基础的安装和配置流程,还提供了实际操作中可能遇到的问题及其解决方法,有助于提高使用者的实际操作能力。
基于SpringBoot+Vue的软件产品展示销售系统源码数据库文档.zip
《书戴嵩画牛》教学课件.pptx
20届智能车 【项目资源】:包含前端、后端、移动开发、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源,毕业设计等各种技术项目的源码。包括C++、Java、python、web、C#、EDA等项目的源码。 【适用人群】:适用于希望学习不同技术领域的初学者或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。