内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

android之模擬手機(jī)助手下載-創(chuàng)新互聯(lián)

在學(xué)習(xí)了javaSE過(guò)后,現(xiàn)在開(kāi)始繼續(xù)我的android生活,之前學(xué)習(xí)完JavaSE,通過(guò)UI界面做過(guò)模擬游戲《貪吃蛇》和基本版計(jì)算器,現(xiàn)在學(xué)習(xí)Android接近有20天的時(shí)間,開(kāi)始制作模擬手機(jī)助手下載,制作手機(jī)助手下載,關(guān)鍵是練習(xí)一下listview,和listview一些相關(guān)的優(yōu)化,以及優(yōu)化所產(chǎn)生的一些bug和解決。

你所需要的網(wǎng)站建設(shè)服務(wù),我們均能行業(yè)靠前的水平為你提供.標(biāo)準(zhǔn)是產(chǎn)品質(zhì)量的保證,主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)網(wǎng)站建設(shè)、手機(jī)網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、成都品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)制作、做網(wǎng)站、建網(wǎng)站。成都創(chuàng)新互聯(lián)公司擁有實(shí)力堅(jiān)強(qiáng)的技術(shù)研發(fā)團(tuán)隊(duì)及素養(yǎng)的視覺(jué)設(shè)計(jì)專才。

    本次需呀用到hfs外部軟件,來(lái)解決網(wǎng)絡(luò)的問(wèn)題,android之模擬手機(jī)助手下載和一些圖片,用于下載時(shí)候的顯示。例如手機(jī)qq、微信、等一些軟件,

下載軟件的時(shí)候需要下載是時(shí)間,因?yàn)槲覀兊膍ain主線程不能做耗時(shí)工作,所以下載的時(shí)候需要在子線程里面下載,這邊需要用的AsyncTask。AsyncTask中的doInBackground是在子線程中下載,onProgressUpdate、onPostExecute(String)和onPostExecute都是在主線程中操作,onProgressUpdate是在doInBackground中下載一半的時(shí)候,想要對(duì)主線程進(jìn)行操作,onPostExecute是要進(jìn)行下載之前才執(zhí)行,onPostExecute(String)是下載之后才操作。

doInBackground(String)在下載的過(guò)程中我們需要傳輸下載路徑。

下載用到URL,例如:URL url = new URL(p_w_picpathUrl);剛開(kāi)始打開(kāi)軟件的時(shí)候,一開(kāi)始顯示整個(gè)頁(yè)面布局,和剛開(kāi)始我們軟件的圖標(biāo),log。都需要下載,下載圖片的用到BitmapFactory,例如:Bitmap bitmap=BitmapFactory.decodeStream(openStream);單下載完成后需要在頁(yè)面中更改,,因?yàn)橹骶€程中不能做頁(yè)面的更改進(jìn)行一系列的操作,所以需要在doInBackground中將下載好的bitmap  return到onPostExecute,在onPostExecute中可以對(duì)主線程進(jìn)行做一系列的操作,p_w_picpath.setImageBitmap(result);這樣,一開(kāi)始的基本頁(yè)面既可以完成,如圖:

android之模擬手機(jī)助手下載

這些打開(kāi)軟件的是最基本的顯示,圖標(biāo)和數(shù)據(jù)都來(lái)自于網(wǎng)絡(luò),每次滑動(dòng)的時(shí)候都會(huì)不斷的下載圖標(biāo),下載在過(guò)的圖標(biāo)他會(huì)再次在下載,這個(gè)體驗(yàn)是非常不好的。所以我們?cè)谙螺d的圖標(biāo)過(guò)后要把bitmap保存起來(lái),當(dāng)已經(jīng)下載過(guò)的就不要再下載,直接從容器里面取。例如:Bitmap bitmap = p_w_picpathBitmaplist.get(position);在圖片bitmap 下載完后就保存起來(lái),不過(guò)在我們下載的過(guò)程中是需要時(shí)間的。所以在現(xiàn)在中如果還是快速的上下滑動(dòng)還是一樣會(huì)導(dǎo)致圖片多次下載,解決:因?yàn)槲覀冊(cè)诿看蜗螺d的時(shí)候都會(huì)new 出asyncTask 來(lái)對(duì)我們圖片進(jìn)行下載,例如:MyAsyncTask asyncTask = new MyAsyncTask(p_w_picpath,position);所以我們讓new 出的asyncTask 進(jìn)行有條件的執(zhí)行,把每一行先對(duì)應(yīng)的asyncTask 進(jìn)行保存。在每次要下在的時(shí)候先看一下容器里面的asyncTask 是否存在,如果存在的話說(shuō)明正在下載,我們就不用再進(jìn)行對(duì)應(yīng)的下載。例如:

                        Bitmap bitmap = p_w_picpathBitmaplist.get(position);

if (bitmap==null) {

MyAsyncTask asyncTask = asyncTasklist.get(position);

if (asyncTask==null) {

asyncTask = new MyAsyncTask(p_w_picpath,position);

asyncTask.execute(p_w_picpathUrllist.get(position));

asyncTasklist.put(position, asyncTask);

}

} else {

p_w_picpath.setImageBitmap(bitmap);

                        }

這樣子就可以在下載的時(shí)候避免多次下載圖標(biāo)。

對(duì)listview的優(yōu)化,在每次上下滑動(dòng)的時(shí)候會(huì)每次產(chǎn)生一個(gè)新的View。所以要對(duì)View進(jìn)行復(fù)用,可以用上一個(gè)消失的View convertView,來(lái)替換這個(gè)所要產(chǎn)生新的view。所以可以對(duì)convertView進(jìn)行判斷,如果convertView要是為null 的時(shí)候我們才創(chuàng)建一個(gè)新的View 。要是不為空的話,就直接拿起來(lái)復(fù)用,這丫可以解決資源問(wèn)題,不會(huì)造成資源浪費(fèi)。例如:

View inflate =null;

if (convertView==null) {

LayoutInflater layoutInflater = getLayoutInflater();

inflate = layoutInflater.inflate(R.layout.layout, null);

} else {

inflate=convertView;

}

和View 一樣,我們每次有聲明的一開(kāi)始聲明的

ImageView p_w_picpath = (ImageView) inflate.findViewById(R.id.p_w_picpath);

ProgressBar progressBar1 = (ProgressBar) inflate.findViewById(R.id.progressBar1);

Button button1 = (Button) inflate.findViewById(R.id.button1);

TextView text = (TextView) inflate.findViewById(R.id.textView1);

幾個(gè)組件,也可以對(duì)其復(fù)用。把這些都放在一個(gè)class里面需要的時(shí)候拿出來(lái)用就可以,例如:

View inflate =null;

Myview myview =null;

if (convertView==null) {

myview = new Myview();

LayoutInflater layoutInflater = getLayoutInflater();

inflate = layoutInflater.inflate(R.layout.layout, null);

myview.p_w_picpath = (ImageView) inflate.findViewById(R.id.p_w_picpath);

myview.progressBar1 = (ProgressBar) inflate.findViewById(R.id.progressBar1);

myview.button1 = (Button) inflate.findViewById(R.id.button1);

myview.text = (TextView) inflate.findViewById(R.id.textView1);

inflate.setTag(myview);

} else {

inflate=convertView;

myview=(Myview) inflate.getTag();

}

這樣的話可以進(jìn)行多次復(fù)用。;

但是由于復(fù)用的關(guān)系,在每次圖片還在下載的過(guò)程是如果圖片在第一張下載完成后,后面的圖片還沒(méi)有下載的關(guān)系,進(jìn)行上下的滑動(dòng)。會(huì)發(fā)現(xiàn),在發(fā)現(xiàn)在底下的時(shí)候有出現(xiàn)第一次的圖標(biāo),在過(guò)了一段時(shí)間后會(huì)發(fā)現(xiàn)圖片的跳變問(wèn)題,這個(gè)就是因?yàn)関iew復(fù)用,例如第7行復(fù)用第0行的時(shí)候,第7行的圖標(biāo)還沒(méi)有下載,原先應(yīng)該是默認(rèn)的原始圖片,但是由于在第0行的時(shí)候已經(jīng)對(duì)圖標(biāo)進(jìn)行更改,他已經(jīng)不是默認(rèn)的圖標(biāo),所以會(huì)顯示之前的圖標(biāo),

解決:在一開(kāi)始要下載圖標(biāo),更改圖片之前把圖片先改為我們默認(rèn)的圖片,例如:

myview.p_w_picpath.setImageResource(R.drawable.ic_launcher);

這樣只能解決基本的問(wèn)題,如果一開(kāi)始只是輕輕滑動(dòng)的話,是不會(huì)出現(xiàn)圖標(biāo)閃變,如果要是一開(kāi)始的時(shí)候在圖片還在下載的時(shí)候就進(jìn)行快速的上下滑動(dòng)的話,這樣還是會(huì)出現(xiàn)圖片閃跳。我們?cè)谳p輕滑動(dòng)的時(shí)候他view 的替換是有規(guī)律的,但是如果開(kāi)始滑動(dòng)的時(shí)候view是沒(méi)有規(guī)律,他的出現(xiàn)時(shí)不定像的,即在滑動(dòng)過(guò)程中,要對(duì)p_w_picpath進(jìn)行替換。

例如:

public void changview(ImageView p_w_picpath)

{

this.p_w_picpath = p_w_picpath;

}

asyncTask.changview(myview.p_w_picpath);

并且在下載完圖片的時(shí)候,必須對(duì)當(dāng)前行有顯示的才進(jìn)行更改。

例如:

int fvp = mlistview.getFirstVisiblePosition();

int lvp = mlistview.getLastVisiblePosition();

if (position>=fvp&&position<=lvp) {

    //保存bitmap

    p_w_picpathBitmaplist.put(position, result);

    p_w_picpath.setImageBitmap(result);

}

以上是打開(kāi)界面時(shí)候最基本的顯示,一切數(shù)據(jù)都來(lái)自與網(wǎng)絡(luò),接下來(lái)就是當(dāng)我們點(diǎn)擊按鈕下載的時(shí)候,會(huì)進(jìn)行基本的文件下載,如同之前的圖片下載一樣,文件下載是在點(diǎn)擊下載后文件才會(huì)下載,所有操作如同上面圖片基本相同,唯一的就是在點(diǎn)擊下載的時(shí)候,文件的進(jìn)度條會(huì)跟隨的下載進(jìn)度不斷的進(jìn)行促發(fā)。這是需要用到的是onProgressUpdate();在用到onProgressUpdate的時(shí)候,數(shù)據(jù)下載進(jìn)度是從publishProgress傳入;操作代碼如;

android之模擬手機(jī)助手下載

android之模擬手機(jī)助手下載

android之模擬手機(jī)助手下載

問(wèn)題:由于一開(kāi)始的優(yōu)化,對(duì)view,和基本組件的復(fù)用關(guān)系,導(dǎo)致了bug,在上下滑動(dòng)的時(shí)候別的地方?jīng)]有點(diǎn)擊下載,他的ProgressBar中的進(jìn)度條也是顯示滿格。

解決:

如同圖片的一樣,定義容器,用于保存,保存當(dāng)前是否是在下載,下載中,下載成功的三個(gè)狀態(tài),在對(duì)齊做對(duì)應(yīng)的操作,并且與進(jìn)行替換,操作代碼如下:

android之模擬手機(jī)助手下載

android之模擬手機(jī)助手下載

android之模擬手機(jī)助手下載

在這次的模擬手機(jī)助手下載,已經(jīng)基本上都完成了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

新聞標(biāo)題:android之模擬手機(jī)助手下載-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://www.rwnh.cn/article48/djpchp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站排名、網(wǎng)站收錄、軟件開(kāi)發(fā)、網(wǎng)站制作、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
新兴县| 财经| 蚌埠市| 大化| 原阳县| 平原县| 白沙| 兴隆县| 资溪县| 澎湖县| 剑阁县| 商河县| 汉源县| 仁寿县| 昔阳县| 宁阳县| 峨眉山市| 康乐县| 武鸣县| 克什克腾旗| 密云县| 利津县| 砚山县| 定陶县| 阿拉善盟| 涪陵区| 扶沟县| 新蔡县| 洛扎县| 舒城县| 富川| 鹤山市| 尼木县| 寿光市| 清苑县| 鄂伦春自治旗| 托克逊县| 长宁县| 宁南县| 教育| 克什克腾旗|