【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些_第5頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android開發(fā)的小經(jīng)驗有哪些

這篇文章將為大家詳細(xì)講解有關(guān)Android開發(fā)的小經(jīng)驗有哪些,文章內(nèi)容質(zhì)量較高,因此在下分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。1.TextView中的getTextSize返回值是以像素(px)為單位的,而setTextSize()是以sp為單位的.所以如果直接用返回的值來設(shè)置會出錯,解決辦法是用setTextSize()的另外一種形式,可以指定單位:<span

style="font-size:16px;">setTextSize(int

unit,

int

size)

TypedValue.COMPLEX_UNIT_PX

:

Pixels

TypedValue.COMPLEX_UNIT_SP

:

Scaled

Pixels

TypedValue.COMPLEX_UNIT_DIP

:

Device

Independent

Pixels</span>2.在繼承自View時,繪制bitmap時,需要將圖片放到新建的drawable-xdpi中,否則容易出現(xiàn)繪制大小發(fā)生改變3.在文字中加下劃線:textView.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);4.scrollView是繼承自frameLayout,所以在使用LayoutParams時需要用frameLayout的5.在Android中幾種網(wǎng)絡(luò)編程的方式:(1)針對TCP/IP的Socket、ServerSocket(2)針對UDP的DatagramSocket、DatagramPackage。這里需要注意的是,考慮到Android設(shè)備通常是手持終端,IP都是隨著上網(wǎng)進(jìn)行分配的。不是固定的。因此開發(fā)也是有

一點與普通互聯(lián)網(wǎng)應(yīng)用有所差異的。(3)針對直接URL的HttpURLConnection(4)Google集成了ApacheHTTP客戶端,可使用HTTP進(jìn)行網(wǎng)絡(luò)編程。針對HTTP,Google集成了AppacheHttpcore和httpclient4版本,因此特別注意Android不支持

httpclient3.x系列,而且目前并不支持Multipart(MIME),需要自行添加httpmime.jar(5)使用WebService。Android可以通過開源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去實現(xiàn)Webservice(6)直接使用WebView視圖組件顯示網(wǎng)頁?;赪ebView進(jìn)行開發(fā),Google已經(jīng)提供了一個基于chrome-lite的Web瀏覽器,直接就可以進(jìn)行上網(wǎng)瀏覽網(wǎng)頁。6.

TranslateAnimation(floatfromXDelta,floattoXDelta,floatfromYDelta,floattoYDelta)這個是我們最常用的一個構(gòu)造方法,floatfromXDelta:這個參數(shù)表示動畫開始的點離當(dāng)前ViewX坐標(biāo)上的差值;floattoXDelta,這個參數(shù)表示動畫結(jié)束的點離當(dāng)前ViewX坐標(biāo)上的差值;floatfromYDelta,這個參數(shù)表示動畫開始的點離當(dāng)前ViewY坐標(biāo)上的差值;floattoYDelta)這個參數(shù)表示動畫開始的點離當(dāng)前ViewY坐標(biāo)上的差值;如果view在A(x,y)點那么動畫就是從B點(x+fromXDelta,y+fromYDelta)點移動到C點

(x+toXDelta,y+toYDelta)點.7.android提供了幾種在其他線程中訪問UI線程的方法。Activity.runOnUiThread(Runnable)View.post(Runnable)View.postDelayed(Runnable,long)HanlderAsyncTask(推薦使用)從網(wǎng)上獲取一個網(wǎng)頁,在一個TextView中將其源代碼顯示出來

package

org.unique.async;

import

java.io.ByteArrayOutputStream;

import

java.io.InputStream;

import

java.util.ArrayList;

import

org.apache.http.HttpEntity;

import

org.apache.http.HttpResponse;

import

org.apache.http.client.HttpClient;

import

org.apache.http.client.methods.HttpGet;

import

org.apache.http.impl.client.DefaultHttpClient;

import

android.app.Activity;

import

android.app.ProgressDialog;

import

android.content.Context;

import

android.content.DialogInterface;

import

android.os.AsyncTask;

import

android.os.Bundle;

import

android.os.Handler;

import

android.os.Message;

import

android.view.View;

import

android.widget.Button;

import

android.widget.EditText;

import

android.widget.TextView;

public

class

NetworkActivity

extends

Activity{

private

TextView

message;

private

Button

open;

private

EditText

url;

@Override

public

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.work);

message=

(TextView)

findViewById(R.id.message);

url=

(EditText)

findViewById(R.id.url);

open=

(Button)

findViewById(R.id.open);

open.setOnClickListener(new

View.OnClickListener()

{

public

void

onClick(View

arg0)

{

connect();

}

});

}

private

void

connect()

{

PageTask

task

=

new

PageTask(this);

task.execute(url.getText().toString());

}

class

PageTask

extends

AsyncTask<String,

Integer,

String>

{

//

可變長的輸入?yún)?shù),與AsyncTask.exucute()對應(yīng)

ProgressDialog

pdialog;

public

PageTask(Context

context){

pdialog

=

new

ProgressDialog(context,

0);

pdialog.setButton("cancel",

new

DialogInterface.OnClickListener()

{

public

void

onClick(DialogInterface

dialog,

int

i)

{

dialog.cancel();

}

});

pdialog.setOnCancelListener(new

DialogInterface.OnCancelListener()

{

public

void

onCancel(DialogInterface

dialog)

{

finish();

}

});

pdialog.setCancelable(true);

pdialog.setMax(100);

pdialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

pdialog.show();

}

@Override

protected

String

doInBackground(String...

params)

{

try{

HttpClient

client

=

new

DefaultHttpClient();

//

params[0]代表連接的url

HttpGet

get

=

new

HttpGet(params[0]);

HttpResponse

response

=

client.execute(get);

HttpEntity

entity

=

response.getEntity();

long

length

=

entity.getContentLength();

InputStream

is

=

entity.getContent();

String

s

=

null;

if(is

!=

null)

{

ByteArrayOutputStream

baos

=

new

ByteArrayOutputStream();

byte[]

buf

=

new

byte[128];

int

ch

=

-1;

int

count

=

0;

while((ch

=

is.read(buf))

!=

-1)

{

baos.write(buf,

0,

ch);

count

+=

ch;

if(length

>

0)

{

//

如果知道響應(yīng)的長度,調(diào)用publishProgress()更新進(jìn)度

publishProgress((int)

((count

/

(float)

length)

*

100));

}

//

讓線程休眠100ms

Thread.sleep(100);

}

s

=

new

String(baos.toByteArray());

}

//

返回結(jié)果

return

s;

}

catch(Exception

e)

{

e.printStackTrace();

}

return

null;

}

@Override

protected

void

onCancelled()

{

super.onCancelled();

}

@Override

protected

void

onPostExecute(String

result)

{

//

返回HTML頁面的內(nèi)容

message.setText(result);

pdialog.dismiss();

}

@Override

protected

void

onPreExecute()

{

//

任務(wù)啟動,可以在這里顯示一個對話框,這里簡單處理

message.setText(R.string.task_started);

}

@Override

protected

void

onProgressUpdate(Integer...

values)

{

//

更新進(jìn)度

System.out.println(""+values[0]);

message.setText(""+values[0]);

pdialog.setProgress(values[0]);

}

}

}8.Spinner不能用在dialog和tabhost中的解決辦法9.eclipse關(guān)聯(lián)JDK源碼(1).點“window”->"Preferences"->"Java"->"InstalledJRES"(2).此時"InstalledJRES"右邊是列表窗格,列出了系統(tǒng)中的JRE環(huán)境,選擇你的JRE,然后點邊上的"Edit...",會出現(xiàn)一個窗口(EditJRE)(3).選中rt.jar文件的這一項:“c:\programfiles\java\jre_1.5.0_06\lib\rt.jar”點左邊的“+”號展開它,(4).展開后,可以看到“SourceAttachment:(none)”,點這一項,點右邊的按鈕“SourceAttachment...”,選擇你的JDK目錄下的“src.zip”文件10.Unabletoopensyncconnection!把設(shè)置里的USB調(diào)試重啟11.EditText設(shè)置光標(biāo)位置問題EditText中有一些預(yù)置文本的時候,想把光標(biāo)調(diào)到最前面,一開始是使用的setSelection(0),結(jié)果發(fā)現(xiàn)在三星P1000上面有問題。經(jīng)過研究發(fā)現(xiàn)需要先調(diào)用EditText.requestFocus(),再調(diào)用setSelection(0)。否則的話,在2.x的機器上有問題,但3.x上面是好著的。12.Android中Home鍵被系統(tǒng)保留,無法象監(jiān)聽回退鍵一樣用onKeyDown,但是可以根據(jù)按下home鍵時會觸發(fā)的activity和view的一些事件來添加自己的處理代碼.網(wǎng)上有人說可以用onAttachWindow來攔截Home鍵,沒試過13.在用surfaceView渲染時,如果要想在需要時其中出現(xiàn)其他View,可以將surfaceView和其他View放在layout中,平常時可以將其他view隱藏14.使用android:imeOptinos可對Android自帶的軟鍵盤進(jìn)行一些界面上的設(shè)置:android:imeOptions="flagNoExtractUi"

//使軟鍵盤不全屏顯示,只占用一部分屏幕

同時,這個屬性還能控件軟鍵盤右下角按鍵的顯示內(nèi)容,默認(rèn)情況下為回車鍵

android:imeOptions="actionNone"

//輸入框右側(cè)不帶任何提示

android:imeOptions="actionGo"

//右下角按鍵內(nèi)容為'開始'

android:imeOptions="actionSearch"

//右下角按鍵為放大鏡圖片,搜索

android:imeOptions="actionSend"

//右下角按鍵內(nèi)容為'發(fā)送'

android:imeOptions="actionNext"

//右下角按鍵內(nèi)容為'下一步'

android:imeOptions="actionDone"

//右下角按鍵內(nèi)容為'完成'15.為TextView添加陰影<style

name="Overlay">

<item

name="android:paddingLeft">2dip</item>

<item

name="android:paddingBottom">2dip</item>

<item

name="android:textColor">#ffffff</item>

<item

name="android:textSiz

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論