Android/Java网络加载框架Retrofit(二)load bitmap into ListView
2017-10-16 15:01
615 查看
Android/Java网络加载框架Retrofit(二)load bitmap into ListView
package zhangphil.http;
import android.app.ListActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.http.GET;
import retrofit2.http.Path;
public class MainActivity extends ListActivity {
private MyRetrofitService mRetrofitService;
private ArrayList<Call> mCalls = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Retrofit mRetrofit = new Retrofit.Builder()
.baseUrl("https://www.baidu.com/")
.build();
mRetrofitService = mRetrofit.create(MyRetrofitService.class);
ArrayAdapter mArrayAdapter = new ArrayAdapter(this, 0) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ImageView imageView = new ImageView(getContext());
setBitmap("bd_logo1.png", imageView);
return imageView;
}
@Override
public int getCount() {
return 10;
}
};
setListAdapter(mArrayAdapter);
}
private void setBitmap(String picName, final ImageView imageView) {
final Call mCall = mRetrofitService.getImagesByName(picName);
mCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
Log.d("请求的网络链接", String.valueOf(mCall.request().url()));
byte[] bytes = response.body().bytes();
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
mCalls.add(mCall);
}
private interface MyRetrofitService {
@GET("img/{picName}")
Call<ResponseBody> getImagesByName(@Path("picName") String picName);
}
@Override
protected void onDestroy() {
super.onDestroy();
for (Call call : mCalls) {
call.cancel();
}
}
}
package zhangphil.http;
import android.app.ListActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import java.util.ArrayList;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.http.GET;
import retrofit2.http.Path;
public class MainActivity extends ListActivity {
private MyRetrofitService mRetrofitService;
private ArrayList<Call> mCalls = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Retrofit mRetrofit = new Retrofit.Builder()
.baseUrl("https://www.baidu.com/")
.build();
mRetrofitService = mRetrofit.create(MyRetrofitService.class);
ArrayAdapter mArrayAdapter = new ArrayAdapter(this, 0) {
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
ImageView imageView = new ImageView(getContext());
setBitmap("bd_logo1.png", imageView);
return imageView;
}
@Override
public int getCount() {
return 10;
}
};
setListAdapter(mArrayAdapter);
}
private void setBitmap(String picName, final ImageView imageView) {
final Call mCall = mRetrofitService.getImagesByName(picName);
mCall.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
Log.d("请求的网络链接", String.valueOf(mCall.request().url()));
byte[] bytes = response.body().bytes();
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imageView.setImageBitmap(bmp);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
t.printStackTrace();
}
});
mCalls.add(mCall);
}
private interface MyRetrofitService {
@GET("img/{picName}")
Call<ResponseBody> getImagesByName(@Path("picName") String picName);
}
@Override
protected void onDestroy() {
super.onDestroy();
for (Call call : mCalls) {
call.cancel();
}
}
}
相关文章推荐
- Android/Java网络加载框架Retrofit(二)load bitmap into ListView
- Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
- Android/Java网络加载框架Retrofit(一)初识
- Android/Java网络加载框架Retrofit(三)结合RxJava2与RxAndroid2
- Android实现异步从网络加载图片列表和上拉加载更多、下拉刷新列表(使用xListView框架实现)
- Android Retrofit2.0网络加载框架
- Android RxJava+Retrofit异步网络加载框架
- android快捷开发之Retrofit网络加载框架的简单使用
- android快捷开发之Retrofit网络加载框架的简单使用
- Android UI-开源框架ImageLoader完美使用+listview加载网络图片与下载
- Android,Gilde框架加载图片进内存。出现的Bitmap too large to be uploaded into a texture
- Android RxJava+Retrofit+okhttp异步网络加载框架
- Android(安卓)网络框架之Retrofit网络框架加载数据使用方法
- Android开源框架Universal-Image-Load网络图片加载
- Android异步从网络加载图片BitmapFactory.decodeStream 返回null的问题
- ListView 加载更多列表 Load More mono forandroid 项目笔记
- Android加载网络数据的框架或工具
- Android ListView加载网络数据和图片
- android开发---ListView+Json+异步网络图片加载+滚动翻页的例子(图片能缓存,图片不错乱)
- Android之ListView异步加载网络图片(优化缓存机制)