Splash Screen加载网络图片实现欢迎页的两种方法

Splash Screen加载网络图片可以用两种方法,一般用在开启app时显示公司logo,广告,或者欢迎页,介绍两种方法来处理:异步加载和子线程处理。

第一种是异步加载的方法
在onCreate中设置
/**异步加载*/
new FetchDataTask().execute(url);

然后编写异步加载的方法
/**异步加载*/
	public class FetchDataTask extends AsyncTask<String,Void,Bitmap>{

        //执行前调用
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        //执行后台任务
        @Override
        protected Bitmap doInBackground(String... strings) {
            Bitmap bitmap=null;
            try {
                bitmap= Utils.getBitmap(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        //任务完成时调用
        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            imageView.setImageBitmap(bitmap);
        }
    }


完整代码
package com.dxsport;

import com.dxsport.common.Utils;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

public class SplashScreenActivity extends Activity {

	private String url = "http://tupian.enterdesk.com/2015/saraxuss/04/17/gou/1/3.jpg";
	private ImageView imageView;
	Bitmap bitmap = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 
		this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
		setContentView(R.layout.splash_screen);
		
		imageView = (ImageView) findViewById(R.id.adImage);
		
		/**异步加载*/
		new FetchDataTask().execute(url);
		
	
		new Handler().postDelayed(new Runnable() {  
 			@Override  
 			public void run() {  
 				Intent  i = new Intent(SplashScreenActivity.this, MainActivity.class);
 				startActivity(i);
 				SplashScreenActivity.this.finish(); 
 			}
 		},3000); 
	}
	
	/**异步加载*/
	public class FetchDataTask extends AsyncTask<String,Void,Bitmap>{

        //执行前调用
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        //执行后台任务
        @Override
        protected Bitmap doInBackground(String... strings) {
            Bitmap bitmap=null;
            try {
                bitmap= Utils.getBitmap(url);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        //任务完成时调用
        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            imageView.setImageBitmap(bitmap);
        }
    }
	
	
}


第二种是添加子线程的方法
在onCreate中设置

// 开启一个子线程,进行网络操作,等待有返回结果,使用handler通知UI  
		new Thread(networkTask).start();

然后编写子线程方法

Handler handler = new Handler() {  
		@Override  
		public void handleMessage(Message msg) {  
			super.handleMessage(msg);  
			Bundle data = msg.getData();  
			Bitmap bitmap = data.getParcelable("bitmap");
			// UI界面的更新等相关操作  
			imageView.setImageBitmap(bitmap);
		}  
	};  
	/** 
	 * 网络操作相关的子线程 
	 */  
	Runnable networkTask = new Runnable() {  
  
		@Override  
		public void run() {  
			// 在这里进行 http request.网络请求相关操作  
			Message msg = new Message();  
			Bundle data = new Bundle();  
			Bitmap bitmap = Utils.getBitmap(url);
			data.putParcelable("bitmap", bitmap);
			msg.setData(data);  
			handler.sendMessage(msg);  
		}  
	};  



完整代码
package com.dxsport;

import com.dxsport.common.Utils;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;

public class SplashScreenActivity extends Activity {

	private String url = "http://tupian.enterdesk.com/2015/saraxuss/04/17/gou/1/3.jpg";
	private ImageView imageView;
	Bitmap bitmap = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏 
		this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
		setContentView(R.layout.splash_screen);
		
		imageView = (ImageView) findViewById(R.id.adImage);
		
		
		
		// 开启一个子线程,进行网络操作,等待有返回结果,使用handler通知UI  
		new Thread(networkTask).start();  

		
		new Handler().postDelayed(new Runnable() {  
 			@Override  
 			public void run() {  
 				Intent  i = new Intent(SplashScreenActivity.this, MainActivity.class);
 				startActivity(i);
 				SplashScreenActivity.this.finish(); 
 			}
 		},3000); 
	}
	

	Handler handler = new Handler() {  
		@Override  
		public void handleMessage(Message msg) {  
			super.handleMessage(msg);  
			Bundle data = msg.getData();  
			Bitmap bitmap = data.getParcelable("bitmap");
			// UI界面的更新等相关操作  
			imageView.setImageBitmap(bitmap);
		}  
	};  
	/** 
	 * 网络操作相关的子线程 
	 */  
	Runnable networkTask = new Runnable() {  
  
		@Override  
		public void run() {  
			// 在这里进行 http request.网络请求相关操作  
			Message msg = new Message();  
			Bundle data = new Bundle();  
			Bitmap bitmap = Utils.getBitmap(url);
			data.putParcelable("bitmap", bitmap);
			msg.setData(data);  
			handler.sendMessage(msg);  
		}  
	};  

}


Utils 类
package com.dxsport.common;


import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;

public class Utils {
	
	 /**通过传入的图片地址,获取图片*/
	public static Bitmap getBitmap(String url){
		Bitmap bitmap = null;
		try {
            HttpURLConnection connection= (HttpURLConnection) (new URL(url)).openConnection();
            InputStream is=connection.getInputStream();
            bitmap= BitmapFactory.decodeStream(is);
        } catch (Exception e) {
            e.printStackTrace();
        }
		return bitmap;
	}

}

splash_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/adImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值