您的位置:首页 > 理论基础 > 计算机网络

Toast 数据加载,内容加载,网络图片加载提示

2015-10-26 15:19 676 查看
Toast 数据加载,内容加载,网络图片加载提示

数据加载完毕提示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/tv"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="等待数据加载……"
/>
</LinearLayout>


功能代码实现:

创建一个线程,用来加载

package com.ncsyeyy.YeyyToast;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.os.Handler;
import android.widget.TextView;
import android.widget.Toast;

public class MyActivity extends Activity {
//    定义thread返回的id表示
private final int HANDLER_TEST = 0;
/**
* Called when the activity is first created.
*/
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case HANDLER_TEST:
Toast.makeText(MyActivity.this, "数据加载完毕", Toast.LENGTH_LONG).show();
tv.setText("数据加载完毕");
break;
}
}
};
private TextView tv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);

new Thread() {
@Override
public void run() {
super.run();
try {
sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
//                构造message对象
Message msg=new Message();
msg.what=HANDLER_TEST;
handler.sendMessage(msg);
}
}.start();
}
}



Toast提示图片加载成功

定义一个ImageView来存放加载成功的图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/IV"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/ic_launcher"
/>
</LinearLayout>


思路:

1.实例化ImageView存放图片

2.在主线程中一种异步回调机制Handler,使用它,我们可以在完成一个很长时间的任务后做出相应的通知,加载成功或失败

3.利用Bitmap处理接收的url

4.判断网络是否畅通

package com.ncsyeyy.YeyyToastWangluo;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

public class MyActivity extends Activity {

private ImageView iv;
private final int SUCCESS=0;//定义常量图片加载成功
private final int FAILED=1;//图片加载不成功
//图片加载的地址
private final String url="http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif";
//网络获取图片的Bitmap对象
private Bitmap bit=null;

//        定义Handler对象
private Handler handler=new Handler(){
@Override
public void handleMessage(Message message){
super.handleMessage(message);
//            判断message中的what字段的值
switch (message.what){
case SUCCESS:
//                    加载图片成功的分支
Toast.makeText(MyActivity.this,"图片加载成功",Toast.LENGTH_LONG).show();

iv.setImageBitmap(bit);  →//加载成功的图片放入Imageview中

break;
case FAILED:
//                    加载图片失败的分支
Toast.makeText(MyActivity.this,"图片加载失败",Toast.LENGTH_LONG).show();
break;
}
}
};

/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

iv = (ImageView) findViewById(R.id.IV);

→//        判断网络是否畅通

if (isOpenNetwork()){
//            定义一个thread类的对象
new Thread(){
//                线程的run方法
@Override
public void run(){
super.run();
try {
bit=getRemoteImage(new URL(url));→//Bitmap 处理加载的图片
} catch (MalformedURLException e) {
e.printStackTrace();
}
if(bit!=null){
//                        构造message对象
Message msg=new Message();
msg.what=SUCCESS;
//                        给handler发送message信息对象
handler.sendMessage(msg);
}else{
//                        构造message对象
Message msg=new Message();
msg.what=FAILED;
//                        给handler发送message信息对象
handler.sendMessage(msg);
}
}
}.start();//启动线程

}else {
Toast.makeText(MyActivity.this,"网络不通",Toast.LENGTH_LONG).show();
}
}

//    根据传入的url对象,请求网络图片
public Bitmap getRemoteImage(final URL aURL){
try {
final URLConnection conn=aURL.openConnection();
conn.connect();
//            从url连接中读取图片流
final BufferedInputStream bis=new BufferedInputStream(conn.getInputStream());
//            从图片流中得到bitmap对象
final Bitmap bm= BitmapFactory.decodeStream(bis);
//            关闭图片流
bis.close();
return bm;
} catch (IOException e) {
e.printStackTrace();
Log.d("BEBUGTAG","Oh noooz an error……");
}
return null;
}

//判断网络状态是否正常
private boolean isOpenNetwork(){
ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//        判断网络是否连接
if (connectivityManager.getActiveNetworkInfo()!=null){
return connectivityManager.getActiveNetworkInfo().isAvailable();
}
return false;
}
}


注意:网络权限的问题
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>


扩展:

setMargin 方法:设置view的编剧

setGravity 方法:设置Toast的对齐方式

setView 方法:谁知Toast的布局视图

   

     


页面加载完毕提示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="页面加载完毕后显示Toast提示框"
/>
</LinearLayout>

package com.ncsyeyy.YeyyActivityDownload;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.Toast;

public class MyActivity extends Activity {
/**
* Called when the activity is first created.
* Toast在用户得不到焦点的情况下,给出用户某些提示信息
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
public void onWindowFocusChanged(boolean hasFocus){
super.onWindowFocusChanged(hasFocus);
//        如果是得到焦点
if (hasFocus){
//            构造Toast对象,设置显示的内容
Toast t=Toast.makeText(MyActivity.this,"页面加载完毕",Toast.LENGTH_LONG);
//            设置Toast对象的对齐方式
//            Gravity.CENTER 居中对齐
//            Gravity.LEFT 左对齐
//            Gravity.RIGHT 右对齐
//            Gravity.TOP 向上对齐
//            Gravity.END 向下对齐
t.setGravity(Gravity.CENTER,0,0);
//            显示Toast对象
t.show();
}
}
}




源码地址:http://download.csdn.net/detail/csdnyuandaimaxuexi/9214221
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android Toast提示 加载