編輯:關於Android編程
由於在項目開發時,有這樣的簡單需求,問谷歌,網絡上也有好多Utils工具類,但是比較冗余。自己就簡單的寫了一個簡單幫助類。
/**
* 下載文件,更新UI簡單幫助類
*
* @author jarlen
*
*/
public class DownLoadHelper
{
private static final int DOWN_BEGIN = 0;
private static final int DOWN_UPDATA = 1;
private static final int DOWN_FINISH = 2;
private static final int DOWN_ERROR = 3;
private Context mContext;
private TextView mTextView;
private ProgressBar mBar;
private Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
if (!Thread.currentThread().isInterrupted())
{
switch (msg.what)
{
case DOWN_BEGIN:
if (mTextView != null)
{
mTextView.setText(開始下載);
}
if(mBar != null)
{
mBar.setProgress(0);
}
break;
case DOWN_UPDATA:
int factor = msg.arg1;
if (mTextView != null)
{
mTextView.setText(factor + %);
}
if(mBar != null)
{
mBar.setProgress(factor);
}
break;
case DOWN_FINISH:
if (mTextView != null)
{
mTextView.setText(下載完成);
}
if(mBar != null)
{
mBar.setProgress(100);
}
break;
case DOWN_ERROR:
if (mTextView != null)
{
mTextView.setText(下載錯誤);
}
if(mBar != null)
{
mBar.setProgress(0);
}
break;
default:
break;
}
}
};
};
public DownLoadHelper(Context context)
{
this.mContext = context;
}
/**
* 設置下載時,需要更新的UI TextView
* @param view
*/
public void setUpdataView(TextView view)
{
this.mTextView = view;
}
/**
* 設置下載時,需要更新的UI,ProgressBar
* @param bar
*/
public void setUpdataBar(ProgressBar bar)
{
this.mBar = bar;
}
/**
* 開始下載
* @param url
* 文件下載地址
* @param path
* 文件保存地址
*/
public void startDownLoad(final String url, final String path)
{
new Thread()
{
public void run()
{
sendMsg(DOWN_BEGIN, 0);
try
{
long downloadSize = downloadUpdateFile(url, path);
if (downloadSize > 0)
{
sendMsg(DOWN_FINISH, 0);
}
} catch (Exception e)
{
e.printStackTrace();
sendMsg(DOWN_ERROR, 0);
}
};
}.start();
}
private long downloadUpdateFile(String down_url, String path)
throws Exception
{
int down_step = 1;// 提示step
int totalSize;// 文件總大小
int downloadCount = 0;// 已經下載好的大小
int updateCount = 0;// 已經上傳的文件大小
InputStream inputStream;
OutputStream outputStream;
URL url = new URL(down_url);
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
httpURLConnection.setConnectTimeout(30 * 1000);
httpURLConnection.setReadTimeout(30 * 1000);
// 獲取下載文件的size
totalSize = httpURLConnection.getContentLength();
if (httpURLConnection.getResponseCode() == 404)
{
sendMsg(DOWN_ERROR, 0);
throw new Exception(fail!);
}
inputStream = httpURLConnection.getInputStream();
File dir = new File(path);
if (!dir.exists())
{
dir.mkdir();
}
String name = down_url.substring(down_url.lastIndexOf(/) + 1,
down_url.length());
File updateFile = new File(dir, name);
outputStream = new FileOutputStream(updateFile, false);// 文件存在則覆蓋掉
byte buffer[] = new byte[1024];
int readsize = 0;
while ((readsize = inputStream.read(buffer)) != -1)
{
outputStream.write(buffer, 0, readsize);
downloadCount += readsize;// 時時獲取下載到的大小
// 每次增長1%
if (updateCount == 0
|| (downloadCount * 100 / totalSize - down_step) >= updateCount)
{
updateCount += down_step;
sendMsg(DOWN_UPDATA, updateCount);
}
}
if (httpURLConnection != null)
{
httpURLConnection.disconnect();
}
inputStream.close();
outputStream.close();
return downloadCount;
}
private void sendMsg(int flag, int factor)
{
Message msg = new Message();
switch (flag)
{
case DOWN_BEGIN:// 開始
case DOWN_FINISH:// 完成
case DOWN_ERROR:// 失敗
break;
case DOWN_UPDATA:// 更新進度條
msg.arg1 = factor;
break;
default:
break;
}
msg.what = flag;
handler.sendMessage(msg);
}
}
使用時簡單說明下;
DownLoadHelper helper1 = new DownLoadHelper(this);
helper1.setUpdataView(tv1);
helper1.startDownLoad(http://img1.2345.com/appsimg/wallpaper/4/139460306960.jpg, path);
作為移動終端,電量是一種稀缺資源,需要盡可能的節省。於是,Android系統在空閒時,會主動進入到休眠狀態。我們知道整個Android系統中運行著很多個進程,因此必須有一
偶爾看到之前寫過的代碼,感覺好多東西幾乎在很多項目中都要用到,雖然每個項目的需求和設計都不同,不過實現的效果都是一樣的,可能只是數據格式和一些顏色等的細微差距.但是有的時
先看看效果圖:實現思路:監聽ListView的滑動,等目的項為列表第一個可見的ItemView時,添加一個一個的布局,產生懸停效果實現代碼:public class Cu
本文實例展示了Android中實現為TextView添加多個可點擊的文本的方法。該功能在Android社交軟件的制作中非常具有實用價值。分享給大家供大家參考。具體如下:很