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

时间: 2024-12-20 12:28:22

Android WelcomeActivity 启动画更换网络图片的相关文章

[FMX] Android APP 启动黑屏优化补丁

使用说明 *************************************************** Android APP 启动黑屏优化补丁 作者: Swish, YangYxd 2016.01.16 Version: 1.0.0 QDAC官方群: 250530692 *************************************************** [安装方式] 双击Setup.bat安装补丁文件(安装时会作备份) 双击Uninstall.bat可以恢复. [

Android OpenGL ES 画球体

最近因为兴趣所向,开始学习OpenGL绘图.本文以"画球体"为点,小结一下最近所学. > 初识OpenGL ES 接触OpenGL是从Android开始的.众所周知,Android View 是线程不安全的,于是只允许在主线程中对View进行操作.然而假如我们需要实现复杂的界面,特别是开发游戏,在主线程中画大量图像,会耗费比较长的时间,使得主线程没能及时响应用户输入,甚至出现ANR.于是Android提供了一个 SurfaceView类,通过双缓冲机制(两块画布?三块画布?),允

Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法(转)

转载: Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法   首先感谢博主分享,本文作为学习记录 惊鸿一瞥 微信的启动页,相信大家都不陌生. 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面. 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash).为了印证这一点,我把手机上所有的App都点了一遍.选几个例子 如下图: 微信:  斗鱼:  斗鱼和微信是直接进入了,他们的Splash页面. 知乎:  B站:  知乎和B站要先

android开发之画图版

android开发之画图版 一.新的开始,也是新的挑战: 开始学习java,除了刚开始的时候有些难,觉得难有些晕,慢慢接触之后也就挺好的了, 学习了4天的安卓开发,完成了一个小程序,收获还是不小的:有一些java的基础,所以相对的画图板还是比较简单(对于理解代码而言):但是因为android和java有不一样的地方,所以有些地方应该要注意:不管怎么说新鲜的东西,新的起点.頑張って. 二.初识android: android开发,第一个印象就是,测试麻烦:要用虚拟机或者接上手机,第一次测试的时候,

Android开发之自动更换壁纸

本程序主要实现了: 1.使用AssetManager将assets目录中的文件复制到SD卡的指定位置 2.使用AlarmManager全局定时器,周期性的启动指定组件切换壁纸 3.使用SharedPreferences,将用户个性化的设置保存到手机(例如壁纸切换频率) 4.使用自定义标题栏 5.使用了GestureDetector手势检测器,允许用户滑动切屏 6.使用了overridePendingTransition,在切屏的时候有动画效果 程序运行效果图: 程序代码: ChangeWallp

【Ionic学习】---App名字和图标修改+启动画修改

[app名称修改] 修改config.xml--name标签 [图标和启动画修改] //进入项目所在文件夹执行ionic resources 执行该命令后,会自动在resources文件夹下创建已添加的平台名称的文件夹,把相应素材放到文件夹如下图 resources/android/icon/app.png---应用图标 resources/android/splash/start.png---启动画 <platform name="android"> <icon s

Android中启动第三方应用

主要是通过包名启动第三方应用,获取去包名的方法网上很多,就不多说了. 两种方式启动: 第一种: Intent intent = new Intent(); intent.setClassName("要启动应用的包名", "要启动应用的activity"); startActivity(intent); 第二种: Intent intent = new Intent(); intent = MainActivity.this.getPackageManager().g

android 用代码画虚线边框背景

               1.虚线画效果,可以使用Android中的xml来做. 2.直接上代码: <RelativeLayout android:id="@+id/coupon_popup" android:layout_width="320dp" android:layout_height="200dp" android:layout_margin="20dp" android:gravity="cen

Android利用canvas画各种图形

canvas通俗的说就是一张画布,我们可以使用画笔paint,在其上面画任意的图形. 原理: 可以把canvas视为Surface的替身或者接口,图形便是绘制在Surface上的.Canvas封装了所有的绘制调用.通过Canvas, 绘制到Surface上的内容首先存储到一个内存区域(也就是对应的Bitmapz中),该Bitmap最终会呈现到窗口上. 使用: 1.Canvas可以直接new Canvas(): 2.在View中重写OnDraw()方法,里面有一个Canvas,今天讨论的内容. 方