Android WelcomeActivity 启动画更换网络图片
1、运行效果
第一张是本地的启动图,第二张是网络启动图

2、用到的第三方jar包 Android-Universal-Image-Loader-master
不熟的请看 Android-Universal-Image-Loader 框架使用
3、主要方法
(1)MyApplication
package com.app.android01 ;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import android.app.Application;
import android.content.Context;
import android.graphics.Bitmap.Config; public class MyApplication extends Application { public static DisplayImageOptions options; @Override
public void onCreate() {
super.onCreate();
initImageLoader( getApplicationContext() );
} private void initImageLoader(Context context) {
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
.threadPriority(Thread.NORM_PRIORITY - 2)
.denyCacheImageMultipleSizesInMemory()
.diskCacheExtraOptions(720, 1280, null)
.diskCacheFileNameGenerator(new Md5FileNameGenerator())
.diskCacheSize(50 * 1024 * 1024) // 50 Mb
.tasksProcessingOrder(QueueProcessingType.LIFO)
.diskCacheFileCount( 500 )
.build();
ImageLoader.getInstance().init( config ); initOptions() ;
} private void initOptions(){
options = new DisplayImageOptions.Builder()
.cacheInMemory(true) //启用内存缓存
.cacheOnDisk(true) //启用磁盘缓存
.considerExifParams(true)
.bitmapConfig(Config.RGB_565 )
.build();
}
}
(2)WelcomeActivity
package com.app.android01 ;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.ImageView; public class WelcomeActivity extends Activity { private boolean tag = true ;
//总时间
private int totalTime = 0 ; //网络启动画
private String imageString = "http://c.hiphotos.baidu.com/image/pic/item/8435e5dde71190efec7149d6cc1b9d16fdfa6035.jpg" ; private ImageView welcome_image ; /**
* Handler:跳转到不同界面
*/
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 1 :
totalTime = totalTime + 200 ; if( totalTime == 3000 ){ //如果总时间大于3秒,就跳转到MainActivity,并且结束计数线程
tag = false ;
startActivity( new Intent( WelcomeActivity.this , MainActivity.class ));
finish() ;
}
break ;
}
super.handleMessage(msg);
}
}; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView( R.layout.activity_welcome ) ;
welcome_image = (ImageView) findViewById( R.id.welcome_image ) ; //启动记时工具
new Thread(new ThreadShow()).start() ; ImageLoader.getInstance().loadImage( imageString , MyApplication.options , new SimpleImageLoadingListener(){
@SuppressLint("NewApi") @Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
if( totalTime <= 800 ){ //如果在800毫秒内把网络图片加载出来就显示,否则就只显示本地的
Drawable drawable = new BitmapDrawable( WelcomeActivity.this.getResources(), loadedImage );
welcome_image.setBackground( drawable ) ;
}
}
});
} /**
* 线程类
* @author admin
* 计时器
*/
class ThreadShow implements Runnable {
@Override
public void run() {
while ( tag ) {
try {
Thread.sleep( 200 ); //每间隔200毫秒发送一次
Message msg = new Message();
msg.what = 1 ;
mHandler.sendMessage(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
(3)MainActivity
package com.app.android01 ;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView; public class MainActivity extends Activity { private TextView textView ; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView( R.layout.activity_main ) ; textView = (TextView) findViewById( R.id.tv ) ;
}
}
4、所需要的权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5、项目下载地址
http://download.csdn.net/detail/yanzi2015/8890461
Android WelcomeActivity 启动画更换网络图片的更多相关文章
- android程序启动画面之Splash总结[转]
方法一: 很多应用都会有一个启动界面.欢迎画面慢慢隐现,然后慢慢消隐.实现这种效果的方法有两种(暂时只发现两种)1.使用两个Activity,程序启动时候load第一张Activity,然后由tick ...
- android开发之画图版
android开发之画图版 一.新的开始,也是新的挑战: 开始学习java,除了刚开始的时候有些难,觉得难有些晕,慢慢接触之后也就挺好的了, 学习了4天的安卓开发,完成了一个小程序,收获还是不小的:有 ...
- [FMX] Android APP 启动黑屏优化补丁
使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 201 ...
- Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)
转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法 首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象 ...
- Delphi开发 Android 程序启动画面简单完美解决方案
原文在这里 还是这个方法好用,简单!加上牧马人做的自动生成工具,更是简单. 以下为原文,向波哥敬礼! 前面和音儿一起研究 Android 下启动画面的问题,虽然问题得到了解决,但是,总是感觉太麻烦,主 ...
- 设置Android Studio启动时可选最近打开过的工程
Android Studio启动时,默认会打开最近关闭的工程. 如果想Android Studio在启动时,打开欢迎界面(Welcome to Android Studio界面),则可以通过设置Set ...
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- Android开机启动Activity或者Service方法
本文出自 “Bill_Hoo专栏” 博客,请务必保留此出处http://billhoo.blog.51cto.com/2337751/761230 这段时间在做Android的基础开发,现在有一需求是 ...
- Android 实现图片画画板
本文主要讲述了Android 实现图片画画板 设计项目布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
随机推荐
- 实现一个 Variant
很多时候我们希望能够用一个变量来保存和操作不同类型的数据(比如解析文本创建 AST 时保存不同类型的结点),这种需求可以通过继承来满足,但继承意味着得使用指针或引用,除了麻烦和可能引起的效率问题,该做 ...
- php高级面试题知识点(转载)
php高级面试题知识点大全 时间:2016-01-26 06:36:22来源:网络 导读:php高级面试题知识点大全,本套面试题内容包括php魔术方法.php单点登录.linux基本命令.前端开发技术 ...
- Android应用安全之Content Provider安全
android平台提供了Content Provider,将一个应用程序的指定数据集提供给其它应用程序.这些数据可以存储在文件系统.SQLite数据库中,或以任何其它合理的方式存储.其他应用可以通过C ...
- spring源码分析之spring-web remoting模块概况及基本概念
spring-web总体分为三部分:caucho.httpinvoker.jaxws,其总体构造图如下: uml结构: 先看看网上搜索到的上述实现的原理吧:Spring RMI,Hessian/Bur ...
- Swift3.0_注释,警告,todo的写法
一. Swift3.0 不支持写Prama的注释了. 也不能打#warning了. 二. 取代方法 1. 注释: //MARK: - setter & getter 2.警告 //FIXME: ...
- Android学习笔记之Drawable 文件夹
PS:最近闲着无聊..模仿去写个QQapp..效果还不错..并且从中又学习到了一些相关的东西,在这里进行一些相关总结.. 学习内容: Android 中 Drawable 文件夹内部相关属性.. ...
- 一、HTTPServer,RequestHandler,ServerHandler,Handler
1. HTTPServer,RequestHandler,ServerHandler,Handler 1.1 基本概念 HTTPServer主要是对传输控制层HTTP,TCP,S ...
- ASP.NET中使用DropDownList实现无刷新二级联动详细过程
Demo.sql create table Car( [id] int identity, ) not null, ) not null ) go insert into Car ([brand],[ ...
- 初识Windows窗体(包括各种控件,属性,方法)
什么是Wind ows窗体? 顾名思义,win dows窗体就是将一些所必须的信息通过窗体的形式展示给客户看.例如:我们经常玩的QQ登陆界面,微信登陆界面,等等,都是以窗体的形式将信息展示给我们看的. ...
- sencha/extjs 动态创建grid表格
//创建普通表格 id,父容器,标题,json数据字符串,列名(逗号分隔),json数据key即store的fields属性(逗号分隔) function createCommonTable(id, ...