老师,我运行一片空白,看一下哪里漏写了
public class GifDownLoad extends Thread {
private String mUrl;
private DownLoadListener mListener;
public GifDownLoad(String url,DownLoadListener listener) {
mUrl = url;
mListener = listener;
}
@Override
public void run() {
File file = new File("/data/data/com.example.mygif/cache/", "test.gif");
if (!file.getParentFile().exists()){
file.mkdirs();
}
if (file.exists()){
file.delete();
}
try {
URL url = new URL(mUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setDoInput(true);
if (connection.getResponseCode() == 200){
InputStream is = connection.getInputStream();
FileOutputStream fos = new FileOutputStream(file);
byte[] buf = new byte[1024*8];
int len;
while ((len = is.read()) !=-1){
fos.write(buf,0,len);
}
is.close();
fos.flush();
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
mListener.onFinish(file);
}
public static interface DownLoadListener{
void onFinish(File file);
}
}
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.HONEYCOMB){
setLayerType(View.LAYER_TYPE_SOFTWARE,null);
}
}
public void setMovieResource(int resId){
mResId = resId;
mMovie = Movie.decodeStream(getResources().openRawResource(resId));
}
public void setFile(File file){
mMovie = Movie.decodeFile(file.getAbsolutePath());
}
@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 duration = mMovie.duration();
if (duration ==0){
duration = 1000;
}
int time = (int) ((now - mStartTime) % duration);
mMovie.setTime(time);
mMovie.draw(canvas,0,0);
invalidate();
}
}
}
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);
((RelativeLayout)findViewById(R.id.rl)).addView(gifView);
//gifView.setMovieResource(R.raw.ppt);
new GifDownLoad("http://cdn.duitang.com/uploads/item/201411/16/20141116232126_yXFLS.gif", new GifDownLoad.DownLoadListener() {
@Override
public void onFinish(File file) {
gifView.setFile(file);
}
}).start();
}
}
正在回答
它的网址换了,以前是http,现在改成了https了,你可以把上述网址复制到浏览器中看一下,自动的变成了https,这样的话还需要有证书相关的内容。建议你重新找一个http网址的gif图来运行。祝:学习愉快
- 参与学习 人
- 提交作业 147 份
- 解答问题 687 个
本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星