运行应用后图片加载不出来?
GifDownload:
public class GifDownload extends Thread {
private static final String TAG = "GifDownload";
private String mUrl;
private DownloadListener mListener;
public GifDownload(String url,DownloadListener listener) {
mUrl = url;
mListener = listener;
}
@Override
public void run() {
super.run();
File file = new File("/data/data/com.demo.gif/cache/", "test.gif");
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
if (file.exists()) {
file.delete();
}
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(mUrl);
HttpResponse httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
FileOutputStream fileOutputStream = new FileOutputStream(file);
InputStream inputStream = httpResponse.getEntity().getContent();
byte[] buf = new byte[1024 * 8];
int len = 0;
while ((len = inputStream.read(buf)) != -1) {
fileOutputStream.write(buf, 0, len);
}
fileOutputStream.flush();
fileOutputStream.close();
inputStream.close();
}
httpClient.getConnectionManager().shutdown();
} catch (Exception e) {
Log.e(TAG, "run: ", e);
}
mListener.onFinish(file);
}
public static interface DownloadListener {
void onFinish(File file);
}
}GifView:
public class GifView extends View {
private int mResId;
private Movie mMovie;
private long mStartTime;
public GifView(Context context) {
super(context);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
}
public void setMovieResource(int resId) {
mResId = resId;
mMovie = Movie.decodeStream(getResources().openRawResource(resId));
}
//为当前的view设置宽高
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mMovie != null) {
setMeasuredDimension(mMovie.width(), mMovie.height());
} else {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (mMovie != null) {
long now = SystemClock.uptimeMillis();
if (mStartTime == 0) {
mStartTime = now;
}
//动画持续的时间
int dur = mMovie.duration();
if (dur == 0) {
dur = 1000;
}
int timeInterval = (int) ((now - mStartTime) % dur);
mMovie.setTime(timeInterval);
mMovie.draw(canvas, 0, 0);
invalidate();
}
}
public void setFile(File file) {
mMovie = Movie.decodeFile(file.getAbsolutePath());
}
}MainActivity代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final GifView gifView = new GifView(this);
((ViewGroup) findViewById(R.id.layout_holder)).addView(gifView);
//gifView.setMovieResource(R.raw.demo);
new GifDownload("http://ww2.sinaimg.cn/mw690/005zXVmagw1f385elswm8g30fk06enpg.gif", new GifDownload.DownloadListener() {
@Override
public void onFinish(File file) {
if (file.exists()) {
gifView.setFile(file);
}
}
}).start();
}
}我在gifView.setFile(file)处打了断点,也看到下载的文件了,就是显示不出来。

0
收起
正在回答 回答被采纳积分+1
4回答
lovewhoilove
2018-08-09 19:42:49

这个是用的视频中提供的url地址,关键是和源码对照过了呀,不是运不运行你的代码的问题,并且,现在都不用eclipse开发了
Android数据通信开发与应用2018版
- 参与学习 人
- 提交作业 147 份
- 解答问题 687 个
本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星