Android 启动页加载gif、视频、图片、并下载到本地
生活随笔
收集整理的這篇文章主要介紹了
Android 启动页加载gif、视频、图片、并下载到本地
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
之前了解了一些這方面的知識(shí),網(wǎng)上具體沒(méi)有一個(gè)全面的,由于近期項(xiàng)目用到了,所以就記錄一下,大神勿噴~
效果圖就不奉上了,公司保密嘛~
需求描述:
具體的邏輯就不寫(xiě)了,直接上代碼吧!
首先當(dāng)后臺(tái)給你數(shù)據(jù)后? 你要做一個(gè)判斷,分別去做下載,最后帶去本地讀取相應(yīng)的圖片也好,GIF也好,視頻也好。
switch(ad_type){ //1:代表圖片case 1:break; //2:代表Gifcase 2:break; //3:代表視頻case 3:break; }?先說(shuō)下圖片的上傳與下載吧
case 1:PicassoUtils.loadOpenPicFromUrl(openScreenAdResponseApiResponse.getData().getAd().getImage_url());//這是后臺(tái)給的URLbreak;//自己封裝的PicassoUtils
算了? ?代碼涉及的太多了? 不過(guò)給大家手寫(xiě)個(gè)通用的吧 ,我也就不封裝了
忽略上面哈哈~
好了開(kāi)始正題
下面寫(xiě)個(gè)不管是圖片還是gif,還是視頻都能下載的
case 3:// 下載地址,這個(gè)是后臺(tái)的url,不同的參數(shù)會(huì)對(duì)應(yīng)不同的Urlpath = openScreenAdResponseApiResponse.getData().getAd().getImage_url();// 1.創(chuàng)建文件夾,在存儲(chǔ)卡下String dirName = Environment.getExternalStorageDirectory() + "/" + getPackageName();// 2.創(chuàng)建的File做相應(yīng)的判斷File file = new File(dirName);// 3.文件夾不存在時(shí)創(chuàng)建if (!file.exists()) {file.mkdir();}// 下載后的文件名int i2 = path.lastIndexOf("/"); // 取的最后一個(gè)斜杠后的字符串為名fileName = dirName + path.substring(i2, path.length());File file1 = new File(fileName);if (file1.exists()) {// 如果已經(jīng)存在, 就不下載了, 去存儲(chǔ)它的路徑,這是我自己封裝的一個(gè)SP相關(guān)工具類,你們可以自己寫(xiě)一個(gè)sputilsad.put(SPConstants.AD.popup_vove, fileName);} else {new Thread(new Runnable() {@Overridepublic void run() {// 下載具體操作DOWNLOAD();}}).start();}break;//DOWNLOAD();
// 下載具體操作 private void DOWNLOAD() {try {URL url = new URL(path);// 打開(kāi)連接URLConnection conn = url.openConnection();// 打開(kāi)輸入流InputStream is = conn.getInputStream();// 創(chuàng)建字節(jié)流byte[] bs = new byte[1024];int len;OutputStream os = new FileOutputStream(fileName);// 寫(xiě)數(shù)據(jù)while ((len = is.read(bs)) != -1) {os.write(bs, 0, len);}// 完成后關(guān)閉流os.close();is.close();// }} catch (Exception e) {e.printStackTrace();} }我就不封裝了 自己動(dòng)下小手哦
上面已經(jīng)吧圖片,gif,視頻的路徑下載好了,下面開(kāi)始去根據(jù)不同的參數(shù)顯示不同的內(nèi)容吧
記住把后臺(tái)的參數(shù)也傳過(guò)去哦? ?我們還要去顯示呢~? ??
// 假設(shè)ad_type就是參數(shù) switch (ad_type) {case 1://加載圖片用Picasso 或著 glide都可以自己去寫(xiě) 這個(gè)要不會(huì)就沒(méi)誰(shuí)了break;case 2://implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.16' 本人采用的是它加載的gif 你也可以 用glide ,具體各個(gè)好處就不說(shuō)了try {// 1.new 一個(gè)GifDrawable popup_gif是你Sp儲(chǔ)存的gif路徑 imagess是你的控件GifDrawable gifFromPath = new GifDrawable(popup_gif);imagess.setImageDrawable(gifFromPath);} catch (IOException e) {e.printStackTrace();}break;case 3://videoURI是你Sp儲(chǔ)存的視頻路徑 iv_videoviwe是你播放視頻的控件,我才用的是VideoViewiv_videoviwe.setVideoURI(Uri.parse(videoURI));// 播放iv_videoviwe.start(); break; }寫(xiě)的很清楚了 xml 布局自己寫(xiě) 最后倒計(jì)時(shí)自己寫(xiě)把? ?學(xué)會(huì)靠自己? 加油少年~
總結(jié)
以上是生活随笔為你收集整理的Android 启动页加载gif、视频、图片、并下载到本地的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Qt解决连接https报错
- 下一篇: Android开发这么久你竟然还不知道D