老师,我运行一片空白,看一下哪里漏写了

老师,我运行一片空白,看一下哪里漏写了

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();
   }
}

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

它的网址换了,以前是http,现在改成了https了,你可以把上述网址复制到浏览器中看一下,自动的变成了https,这样的话还需要有证书相关的内容。建议你重新找一个http网址的gif图来运行。祝:学习愉快

  • Ygz_ 提问者 #1
    老师您可以帮我找一个吗?
    2018-08-27 16:19:39
  • 慕粉631594 回复 提问者 Ygz_ #2
    你只能百度网上找了
    2018-08-27 18:20:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师