package com.itheima.text;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
public class MainActivity extends Activity {
private EditText pathET;
private NetService service;
private TextView textTV;
private Handler handler = new Handler(); // 处理器, 可以在线程之间通信
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textTV = (TextView) findViewById(R.id.textTV);
pathET = (EditText) findViewById(R.id.pathET);
service = new NetService();
}
public void asyncGo(View v) {
new AsyncHttpClient().post(pathET.getText().toString(), new AsyncHttpResponseHandler() {
public void onSuccess(String response) {
textTV.setText(response);
Toast.makeText(getApplicationContext(), "Async 加载成功", Toast.LENGTH_SHORT).show();
}
public void onFailure(Throwable error, String content) {
Toast.makeText(getApplicationContext(), "Async 加载失败", Toast.LENGTH_SHORT).show();
}
});
}
public void go(View v) {
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(false); // 设置进度条不能被取消
dialog.show(); // 显示进度条
new Thread(){
public void run() {
try {
String path = pathET.getText().toString(); // 获取地址
final String text = service.getText(path); // 访问网络(4.0以上不能主线程联网), 得到文本
handler.post(new Runnable(){ // 向创建该handler的线程(main)发送一个Runnable, 主线程执行run()
public void run() {
dialog.dismiss(); // 取消
textTV.setText(text); // 把文本放到TextView中(主线程创建的视图, 只能在主线程修改)
}
});
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "服务器忙!", Toast.LENGTH_SHORT).show();
}
}
}.start();
}
}
package com.itheima.image;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.BinaryHttpResponseHandler;
import com.loopj.android.image.SmartImageView;
public class MainActivity extends Activity {
private EditText pathET;
private NetService service;
private ImageView picIV;
private SmartImageView picSIV;
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
picSIV = (SmartImageView) findViewById(R.id.picSIV);
picIV = (ImageView) findViewById(R.id.picIV);
pathET = (EditText) findViewById(R.id.pathET);
service = new NetService(getCacheDir());
}
public void smartGo(View v) {
// 通过URL地址加载图片, 设置加载失败时显示的图片, 设置加载过程中显示的图片
picSIV.setImageUrl(pathET.getText().toString().trim(), android.R.drawable.ic_delete, android.R.drawable.ic_menu_gallery);
}
public void asyncGo(View v) {
new AsyncHttpClient().post(pathET.getText().toString(), new BinaryHttpResponseHandler() {
public void onSuccess(byte[] binaryData) {
Bitmap bm = BitmapFactory.decodeByteArray(binaryData, 0, binaryData.length);
picIV.setImageBitmap(bm);
Toast.makeText(getApplicationContext(), "Async 加载成功", Toast.LENGTH_SHORT).show();
}
public void onFailure(Throwable error, String content) {
Toast.makeText(getApplicationContext(), "Async 加载失败", Toast.LENGTH_SHORT).show();
}
});
}
public void go(View v) {
final ProgressDialog dialog = new ProgressDialog(this);
dialog.setCancelable(false); // 设置进度条不能被取消
dialog.show(); // 显示进度条
new Thread() {
public void run() {
try {
String path = pathET.getText().toString().trim(); // 获取路径
final Bitmap bm = service.getImage(path); // 访问网络, 获取图片
handler.post(new Runnable() { // 给主线程发送一个Runnable
public void run() {
picIV.setImageBitmap(bm); // 主线程设置图片
dialog.dismiss();
}
});
} catch (Exception e) {
e.printStackTrace();
handler.post(new Runnable() { // 给主线程发送一个Runnable
public void run() {
dialog.dismiss();
Toast.makeText(getApplicationContext(), "加载失败", Toast.LENGTH_SHORT).show();
}
});
}
}
}.start();
}
}