第一篇:關(guān)于android手機的文件共享
關(guān)于android系統(tǒng)的設(shè)備的文件共享
個人寫作水平不怎么好,請各位不要笑話!寫這個沒有什么其他意圖,只是想和大家分享個人的一些想法!
如今這年代手機、平板電腦進(jìn)入了每個人的生活,時不時的會拿出來玩玩。有時候,幾個人在一起的時候,可能會問到“你手機里有什么好東西,分享分享一下”,在這個時候,大家最可能想到的是通過藍(lán)牙來傳輸,當(dāng)然如果在文件大小較少時還好,傳幾分鐘沒關(guān)系,如果是視頻,數(shù)據(jù)包等這類大文件,還這樣傳輸就太費時了。。。。。。。
費話就不多說。直接說說這個文件共享。網(wǎng)絡(luò)速度的比藍(lán)牙快多了,所以我的共享方法就是通過網(wǎng)絡(luò)來共享。說到網(wǎng)絡(luò)當(dāng)然不會是用中國聯(lián)通,中國移動這類,指的是局域網(wǎng),首先得建立一個,android2.2以上系統(tǒng)的手機都可以建立一個無線熱點,可以讓其中一個手機開啟這個功能(如果怕其他設(shè)備通過你的手機上網(wǎng)浪費流量,就可以關(guān)閉移動數(shù)據(jù)),讓其他需要共享的設(shè)備接入這個網(wǎng)絡(luò),如果在windows 下,大家都知道,通過Windows的資源管理將某個文件夾共享,其他設(shè)備通過輸入IP共享目錄就可以了,但是android系統(tǒng)的沒有這么方便的功能,當(dāng)然在這里原理也是一樣的,必須建立一個共享文件夾,這里個人推薦一個軟件是——無線數(shù)據(jù)線(這個網(wǎng)上很多)——此軟件建立的是一個FTP
建立 一個共享還不行啦,得有個軟件能訪問網(wǎng)絡(luò)文件夾才行啦,個人推薦ES文件瀏覽器,通過這兩個軟件就可以完成共享文件。
軟件的使用,我相信大家大部分一看都會用,如果不會請參考網(wǎng)上。總結(jié):
此方法的條件
1:有WIFI功能的設(shè)備
2:有一無線網(wǎng)絡(luò),或者一個手機能提供無線熱點。3:無線數(shù)據(jù)線軟件(僅建立共享機必備)4:ES文件瀏覽器軟件(訪問共享的必備)、說明:此方式,他人可以刪除文件,安全性不高 玩android高手,可以建立一個SMB服務(wù)器進(jìn)行共享。
另一種和與藍(lán)牙點對點發(fā)送方式類似,同樣要求上一種方式的前兩項,要求另外一個軟件,稱為WIFI文件共享軟件,網(wǎng)上有下載。
第二篇:Android 淺談數(shù)據(jù)共享
由麥可網(wǎng)整理,轉(zhuǎn)載請注明出處
Android 淺談數(shù)據(jù)共享
對于應(yīng)用程序之間的數(shù)據(jù)共享,Android提供了比較靈活的方式,相關(guān)的開發(fā)經(jīng)驗下面是Android123平時使用的方法。
1.簡單配置文件:
SharedPreferences方式存儲的配置文件,我們在各個應(yīng)用間可以通過 getSharedPreferences(“eoeandroid”, Context.MODE_PRIVATE);這樣的方式存儲,最后是共享模式,這里使用了私有,而通過全局讀、全局寫可以讓其他的應(yīng)用訪問,通過createPackageContext方法,但是在Android 1.5 以后,共享訪問需要相同UID和簽名才可以訪問。
2.SQLite數(shù)據(jù)庫文件
對于一些較為復(fù)雜的配置或數(shù)據(jù),在Android平臺上我們一般使用SQLite數(shù)據(jù)庫存儲,對于共享我們可以提供ContentProvider接口來實現(xiàn),我們雖然可以獲取當(dāng)前應(yīng)用的數(shù)據(jù)庫保存位置,通過Context的getDatabasePath(String name)這個方法,由于應(yīng)用的PackageName比較長可能會發(fā)生變動,Android提供了類似Intent的方式來匹配一些Uri,比如說電話撥號為 tel:// 而對于網(wǎng)址可以使用 http:// 對于定做坐標(biāo)使用geo://,而我們的數(shù)據(jù)庫可以通過UriMatcher類的addURI添加一些Uri,通過隱式Intent方式實現(xiàn)自己的處理方式,具體的大家可以查看短信應(yīng)用的開源代碼 Mms.git 了解。
3.對于運行中的高性能數(shù)據(jù)共享
在Android中共享內(nèi)存方法可以使用linux底層的mmap方式,對于跨進(jìn)程訪問,使用IPC,當(dāng)然Android還提供了AIDL遠(yuǎn)程服務(wù)來實現(xiàn)數(shù)據(jù)綁定訪問處理,所以說對于Android Service的開發(fā),一定要記住通過Bind方式來開發(fā),比較典型的有音樂播放器,Music.gif
第三篇:文件和打印機共享
一、啟用guest來賓帳戶;
二、控制面板→管理工具→本地安全策略→本地策略→用戶權(quán)利指派里,“從網(wǎng)絡(luò)訪問此計算機”中加入guest帳戶,而“拒絕從網(wǎng)絡(luò)訪問這臺計算機”中刪除guest帳戶;
三、我的電腦→工具→文件夾選項→查看→去掉“使用簡單文件共享(推薦)”前的勾;
四、設(shè)置共享文件夾;
五、控制面板→管理工具→本地安全策略→本地策略→安全選項里,把“網(wǎng)絡(luò)訪問:本地帳戶的共享和安全模式”設(shè)為“僅來賓-本地用戶以來賓的身份驗證”(可選,此項設(shè)置可去除訪問時要求輸入密碼的對話框,也可視情況設(shè)為“經(jīng)典-本地用戶以自己的身份驗證”);
六、右擊“我的電腦”→“屬性”→“計算機名”,該選項卡中有沒有出現(xiàn)你的局域網(wǎng)工作組名稱,如“work”等。然后單擊“網(wǎng)絡(luò) ID”按鈕,開始“網(wǎng)絡(luò)標(biāo)識向?qū)А保簡螕簟跋乱徊健?,選擇“本機是商業(yè)網(wǎng)絡(luò)的一部分,用它連接到其他工作著的計算機”;單擊“下一步”,選擇“公司使用沒有域的網(wǎng)絡(luò)”;單擊“下一步”按鈕,然后輸入你的局域網(wǎng)的工作組名,如“work”,再次單擊“下一步”按鈕,最后單擊“完成”按鈕完成設(shè)置。
訪問網(wǎng)上鄰居時顯示:“ windows xp系統(tǒng)訪問局域網(wǎng)時顯示 ”WORKGROUP無法訪問.您可能沒有權(quán)限使用網(wǎng)絡(luò)資源.請與這臺服務(wù)器的管理員聯(lián)系以查明您是否有訪問權(quán)限.此工作組的服務(wù)器的列表當(dāng)前無法使用.“ 1,沒有共享資源/共享服務(wù)未啟用。
癥狀:電腦與電腦間可以Ping通,但無法訪問共享資源,在“計算機管理”中查看“本地共享”后會彈出“沒有啟動服務(wù)器服務(wù)”的錯誤對話框。
解決:在控制面板-管理工具-服務(wù)中啟動Server服務(wù)。并設(shè)置“啟動類型”為“自動”。2,IP設(shè)置有誤。
癥狀:雙機之間無法互Ping,連接用的雙絞線經(jīng)過測試沒有問題,沒有安裝防火墻。解決:檢查兩臺電腦的IP是否處在同一網(wǎng)段,還有子掩碼是否相同。3,WINXP默認(rèn)設(shè)置不正確。
癥狀:從WIN98/2000/2003上無法訪問另一臺WINXP的機器。
解決:在“控制面板”中的“用戶帳戶”啟用Guest帳號。然后在運行中輸入secpol.msc啟動“本地安全策略”。本地策略-> 用戶權(quán)利指派,打開“從網(wǎng)絡(luò)訪問此計算機”,添加Guest帳戶
本地策略-> 安全選項,禁止”帳戶:使用空白密碼的本地帳戶只允許進(jìn)行控制臺登陸“。另外有時還會遇到另外一種情況:訪問XP的時候,登錄對話框中的用戶名是灰的,始終是Guest用戶,不能輸入別的用戶帳號。
解決:本地策略-> 安全選項-> ”網(wǎng)絡(luò)訪問:本地帳戶的共享和安全模式“,修改為”經(jīng)典-本地用戶以自己的身份驗證“ 4,系統(tǒng)漏洞修補軟件修改了安全策略。
癥狀:在“網(wǎng)上鄰居”中可以看到對方的計算機,但是訪問共享時卻提示“沒有權(quán)限訪問網(wǎng)絡(luò)”
解決:在開始菜單運行中輸入secpol.msc啟動“本地安全策略”,本地策略-> 用戶權(quán)利分配,打開“拒絕從網(wǎng)絡(luò)訪問這臺計算機”,刪除guest用戶。5,防火墻規(guī)則。
癥狀:安裝了防火墻(包括WINXP系統(tǒng)自帶的防火墻),出現(xiàn)無法Ping通,或者是訪問共享資源的時候提示”XXX無法訪問“、”您可能沒有權(quán)限使用網(wǎng)絡(luò)資源“、”請與這臺服務(wù)器的管理員聯(lián)系以查明您是否有訪問權(quán)限“、”找不到網(wǎng)絡(luò)路徑“等類似的提示。解決:停止防火墻或者添加局域網(wǎng)的訪問規(guī)則。
WINXP自帶的防火墻:打開控制面板-> 網(wǎng)絡(luò)和Internet連接-> Windows防火墻-> 例外,勾選“文件和打印機共享”。
6,Win2000/XP與Win98互訪
癥狀:Ping命令可以通過,但無法在“網(wǎng)上鄰居”中實現(xiàn)互訪。
解決:在WIN2000/XP系統(tǒng)中:控制面板-> 管理工具-> 計算機管理-> 本地用戶和組-> 用戶,在Guest帳戶上點擊鼠標(biāo)右鍵,選擇屬性,在常規(guī)項里取消“賬戶已停用”
(注:另外在WIN98系統(tǒng)中也有可能禁止了”文件及打印機共享“的功能,重新開啟即可。)Guest用戶密碼,你設(shè)了嗎?
盛傳Windows XP 下的Guest用戶有嚴(yán)重的安全漏洞,而且在“用戶帳戶”中我們無法為Guest用戶設(shè)置密碼。但是在這里卻可以:在“運行”中輸入:
rundll32 netplwiz.dll,UsersRunDll 將打開“用戶帳戶”頁面,這個可不是我們平常在“控制面板”中的看到的那個“用戶帳戶”。在“用戶帳戶”的“用戶”選項卡下先選中Guest 用戶,然后再點下面的“重設(shè)密碼”。好了現(xiàn)在給你的Guest用戶設(shè)個密碼吧。順便把上面的那個勾也打上吧。1.訪問權(quán)限設(shè)置不當(dāng) Windows NT/2000/XP/2003系統(tǒng)支持NTFS文件系統(tǒng),采用NTFS可以有效增強系統(tǒng)的安全性,但在ACL(訪問控制列表)中對用戶訪問權(quán)限設(shè)置不當(dāng)時,也會導(dǎo)致用戶無法正常訪問本機共享資源,出現(xiàn)“權(quán)限不足”的提示信息。2.賬號和策略設(shè)置不當(dāng)
在Windows工作組環(huán)境中,一般情況下,用戶要使用Guest賬號訪問共享資源。但為了系統(tǒng)的安全,禁用了本系統(tǒng)的Guest賬號,此外,在Windows 2000/XP/2003系統(tǒng)中,組策略默認(rèn)是不允許Guest賬號從網(wǎng)絡(luò)訪問這臺計算機的,這樣就導(dǎo)致其它用戶無法訪問本機的共享資源,出現(xiàn)“拒絕訪問”的提示信息。3.網(wǎng)絡(luò)防火墻設(shè)置不當(dāng)
用戶為了增強本機的安全性,防止非法入侵,安裝了網(wǎng)絡(luò)防火墻。但對網(wǎng)絡(luò)防火墻設(shè)置不當(dāng),同樣導(dǎo)致其它用戶無法訪問本機的共享資源,出現(xiàn)“拒絕訪問”的提示信息,這是因為防火墻關(guān)閉了共享資源所需要的NetBIOS端口。解決方法
1.啟用Guest賬號
在很多情況下,為了本機系統(tǒng)的安全,Guest賬戶是被禁用的,這樣就無法訪問該機器的共享資源,因此必須啟用Guest賬戶。
筆者以Windows XP系統(tǒng)為例進(jìn)行介紹。在共享資源提供端,進(jìn)入到“控制面板→管理工具”后,運行“計算機管理”工具,接著依次展開“計算機管理(本地)→系統(tǒng)工具→本地用戶和組→用戶”,找到Guest賬戶。如果Guest賬戶出現(xiàn)一個紅色的叉號,表明該賬戶已被停用,右鍵單擊該賬號,在Guest屬性對話框中,去除“賬戶已停用”的鉤選標(biāo)記,單擊“確定”后,就啟用了Guest賬戶。此方法適用于Windows 2000/XP/2003系統(tǒng)。
提示:使用Guest賬戶訪問共享資源存在很大的安全隱患。當(dāng)然我們也可以為每個訪問用戶創(chuàng)建一個指定的賬號。首先在共享資源提供端創(chuàng)建一個新的賬號,然后指定該賬號的訪問權(quán)限。接下來在要訪問該共享資源的客戶機中新建一個相同用戶名和密碼的賬號,使用此賬號登錄客戶機后,就能正常訪問該賬號所允許的共享資源。此方法較為安全,但要為網(wǎng)絡(luò)中的每個用戶都創(chuàng)建一個賬號,不適合規(guī)模較大的網(wǎng)絡(luò)。
2.修改用戶訪問策略
雖然啟用了本機的Guest賬號,但用戶還是不能訪問本機提供的共享資源,這是因為組策略默認(rèn)不允許Guest賬號從網(wǎng)絡(luò)訪問本機。
單擊“開始→運行”,在運行框中輸入“gpedit.msc”,在組策略窗口中依次展開“本地計算機策略→計算機配置→Windows設(shè)置→安全設(shè)置→本地策略→用戶權(quán)利指派”(圖1),在右欄中找到“拒絕從網(wǎng)絡(luò)訪問這臺計算機”項,打開后刪除其中的Guest賬號,接著打開“從網(wǎng)絡(luò)訪問此計算機”項,在屬性窗口中添加Guest賬號。這樣就能使用Guest賬號從網(wǎng)絡(luò)中訪問該機的共享資源了。此方法適用于Windows 2000/XP/2003系統(tǒng)。3.合理設(shè)置用戶訪問權(quán)限
網(wǎng)絡(luò)中很多機器使用 NTFS文件系統(tǒng),它的ACL功能(訪問控制列表)可以對用戶的訪問權(quán)限進(jìn)行控制,用戶要訪問這些機器的共享資源,必須賦予相應(yīng)的權(quán)限才行。如使用Guest賬號訪問該機器的CPCW共享文件夾,右鍵點擊該共享目錄,選擇“屬性”,切換到“安全”標(biāo)簽頁,然后將Guest賬號添加到用戶列表中,接著指定Guest的訪問權(quán)限,至少要賦予“讀取”和“列出文件夾目錄”權(quán)限(圖2)。如果想讓多個用戶賬號能訪問該共享目錄,只需要添加Everyone賬號,然后賦予“讀取”和“列出文件夾目錄”權(quán)限即可,這樣就避免逐一添加和指定每個用戶訪問賬號。此方法適用于采用NTFS文件系統(tǒng)的Windows 2000/XP/2003系統(tǒng)。4.改網(wǎng)絡(luò)訪問模式
XP默認(rèn)是把從網(wǎng)絡(luò)登錄的所有用戶都按來賓賬戶處理的,因此即使管理員從網(wǎng)絡(luò)登錄也只具有來賓的權(quán)限,若遇到不能訪問的情況,請嘗試更改網(wǎng)絡(luò)的訪問模式。打開組策略編輯器,依次選擇“計算機配置→Windows設(shè)置→安全設(shè)置→本地策略→安全選項”,雙擊“網(wǎng)絡(luò)訪問:本地賬號的共享和安全模式”策略,將默認(rèn)設(shè)置“僅來賓—本地用戶以來賓身份驗證”,更改為“經(jīng)典:本地用戶以自己的身份驗證”。
這樣即使不開啟guest,你也可以通過輸入本地的賬戶和密碼來登錄你要訪問的計算機,本地的賬戶和密碼為你要訪問的計算機內(nèi)已經(jīng)的賬戶和密碼。若訪問網(wǎng)絡(luò)時需要賬戶和密碼,可以通過輸入你要訪問的計算機內(nèi)已有的賬戶和密碼來登錄。
若不對訪問模式進(jìn)行更改,也許你連輸入用戶名和密碼都辦不到,//computername/guest為灰色不可用。即使密碼為空,在不開啟guest的情況下,你也不可能點確定登錄。改成經(jīng)典模式,則可以輸入用戶名和密碼來登錄你要進(jìn)入的計算機。5.正確配置網(wǎng)絡(luò)防火墻
很多機器安裝了網(wǎng)絡(luò)防火墻,它的設(shè)置不當(dāng),同樣導(dǎo)致用戶無法訪問本機的共享資源,這時就要開放本機共享資源所需的NetBIOS端口。筆者以天網(wǎng)防火墻為例,在“自定義IP規(guī)則”窗口中選中“允許局域網(wǎng)的機器使用我的共享資源”規(guī)則,最后點擊“保存”按鈕,這樣就開放了NetBIOS端口。6.一個值得注意的問題
即當(dāng)用戶的口令為空時,即使你做了上述的所有的更改還是不能進(jìn)行登錄,訪問還是會被拒絕。這是因為,在系統(tǒng)“安全選項”中有“賬戶:使用空白密碼的本地賬戶只允許進(jìn)行控制臺登錄”策略默認(rèn)是啟用的,根據(jù)Windows XP安全策略中拒絕優(yōu)先的原則,密碼為空的用戶通過網(wǎng)絡(luò)訪問使用Windows XP的計算機時便會被禁止。我們只要將這個策略停用即可解決問題。在安全選項中,找到“使用空白密碼的本地賬戶只允許進(jìn)行控制臺登錄”項,停用就可以,否則即使開了guest并改成經(jīng)典模式還是不能登錄。經(jīng)過以上的更改基本就可以訪問了,7.網(wǎng)絡(luò)鄰居不能看到計算機
可能經(jīng)常不能在網(wǎng)絡(luò)鄰居中看到你要訪問的計算機,除非你知道計算機的名字或者IP地址,通過搜索或者直接輸入//computername或//IP。請按下面的操作解決:啟動“計算機瀏覽器”服務(wù)?!坝嬎銠C瀏覽器服務(wù)”在網(wǎng)絡(luò)上維護(hù)一個計算機更新列表,并將此列表提供給指定為瀏覽器的計算機。如果停止了此服務(wù),則既不更新也不維護(hù)該列表。
137/UDP--NetBIOS名稱服務(wù)器,網(wǎng)絡(luò)基本輸入/輸出系統(tǒng)(NetBIOS)名稱服務(wù)器(NBNS)協(xié)議是TCP/IP上的NetBIOS(NetBT)協(xié)議族的一部分,它在基于NetBIOS名稱訪問的網(wǎng)絡(luò)上提供主機名和地址映射方法。
138/UDP--NetBIOS數(shù)據(jù)報,NetBIOS數(shù)據(jù)報是TCP/IP上的NetBIOS(NetBT)協(xié)議族的一部分,它用于網(wǎng)絡(luò)登錄和瀏覽。
139/TCP--NetBIOS會話服務(wù),NetBIOS會話服務(wù)是TCP/IP上的NetBIOS(NetBT)協(xié)議族的一部分,它用于服務(wù)器消息塊(SMB)、文件共享和打印。請設(shè)置防火墻開啟相應(yīng)的端口。一般只要在防火墻中允許文件夾和打印機共享服務(wù)就可以了。8.關(guān)于共享模式
對共享XP默認(rèn)只給予來賓權(quán)限或選擇允許用戶更改“我的文件”。Windows 2000操作系統(tǒng)中用戶在設(shè)置文件夾的共享屬性時操作非常簡便,只需用鼠標(biāo)右擊該文件夾并選擇屬性,就可以看到共享設(shè)置標(biāo)簽。而在Windows XP系統(tǒng)設(shè)置文件夾共享時則比較復(fù)雜,用戶無法通過上述操作看到共享設(shè)置標(biāo)簽。具體的修改方法如下:打開“我的電腦”中的“工具”,選擇“文件夾屬性”,調(diào)出“查看”標(biāo)簽,在“高級設(shè)置”部分滾動至最底部將“簡單文件共享(推薦)”前面的選擇取消,另外如果選項欄里還有“Mickey Mouse”項也將其選擇取消。這樣修改后用戶就可以象使用Windows 2000一樣對文件夾屬性進(jìn)行方便修改了。9.關(guān)于用網(wǎng)絡(luò)鄰居訪問不響應(yīng)或者反應(yīng)慢的問題
在WinXP和Win2000中瀏覽網(wǎng)上鄰居時系統(tǒng)默認(rèn)會延遲30秒,Windows將使用這段時間去搜尋遠(yuǎn)程計算機是否有指定的計劃任務(wù)(甚至有可能到Internet中搜尋)。如果搜尋時網(wǎng)絡(luò)時沒有反應(yīng)便會陷入無限制的等待,那么10多分鐘的延遲甚至報錯就不足為奇了。下面是具體的解決方法: 關(guān)掉WinXP的計劃任務(wù)服務(wù)(Task Scheduler)
可以到“控制面板/管理工具/服務(wù)”中打開“Task Scheduler”的屬性對話框,單擊“停止”按鈕停止該項服務(wù),再將啟動類型設(shè)為“手動”,這樣下次啟動時便不會自動啟動該項服務(wù)了??偨Y(jié)
不能訪問主要是由于XP默認(rèn)不開啟guest,而且即使開了guest,XP默認(rèn)是不允許guest從網(wǎng)絡(luò)訪問計算機的。還有就是那個值得注意的問題。相信一些不考慮安全的地方或是電腦公司給人做系統(tǒng)密碼都是空的,但這樣是不允許登錄的。只要試過以上的方法,相信是不會再有問題的。最近總遇到這些情況,同屬一個域里的計算機,別人都訪問的了他的計算機,但他就是訪問不了別人的,但他還是訪問的了其他的一些計算機的。和別人的計算機ping也通,但用IP地址查找也找不到,他并沒開防火墻之類的,這究竟是怎么回事?請各位指點迷津,等ing...________________________________________ Windows網(wǎng)上鄰居互訪的基本條件: 1)雙方計算機打開,且設(shè)置了網(wǎng)絡(luò)共享資源;
2)雙方的計算機添加了 ”Microsoft 網(wǎng)絡(luò)文件和打印共享“ 服務(wù); 3)雙方都正確設(shè)置了網(wǎng)內(nèi)IP地址,且必須在一個網(wǎng)段中;
4)雙方的計算機中都關(guān)閉了防火墻,或者防火墻策略中沒有阻止網(wǎng)上鄰居訪問的策略。Windows 98/2000/XP/2003訪問XP的用戶驗證問題 首先關(guān)于啟用Guest為什么不能訪問的問題:
1、默認(rèn)情況下,XP 禁用Guest帳戶
2、默認(rèn)情況下,XP的本地安全策略禁止Guest用戶從網(wǎng)絡(luò)訪問
3、默認(rèn)情況下,XP的 本地安全策略-> 安全選項里,”帳戶:使用空密碼用戶只能進(jìn)行控制臺登陸“是啟用的,也就是說,空密碼的任何帳戶都不能從網(wǎng)絡(luò)訪問只能本地登陸,Guest默認(rèn)空密碼......所以,如果需要使用Guest用戶訪問XP的話,要進(jìn)行上面的三個設(shè)置:啟用Guest、修改安全策略允許Guest從網(wǎng)絡(luò)訪問、禁用3里面的安全策略或者給Guest加個密碼。
有時還會遇到另外一種情況:訪問XP的時候,登錄對話框中的用戶名是灰的,始終是Guest用戶,不能輸入別的用戶帳號。
原因是這個安全策略在作怪(管理工具-> 本地安全策略-> 安全選項-> ”網(wǎng)絡(luò)訪問:本地帳戶的共享和安全模式“)。默認(rèn)情況下,XP的訪問方式是”僅來賓“的方式,那么你訪問它,當(dāng)然就固定為Guest不能輸入其他用戶帳號了。
所以,訪問XP最簡單的方法就是:不用啟用Guest,僅修改上面的安全策略為”經(jīng)典“就行了。別的系統(tǒng)訪問XP就可以自己輸入帳戶信息。
至于訪問2003,默認(rèn)情況下2003禁用Guest,但是沒有 XP 那個討厭的默認(rèn)自相矛盾的來賓方式共享,所以可以直接輸入用戶名密碼訪問。原因:Win2000/XP中存在安全策略限制。有時,Win2000/XP”聰明“過了頭,雖然我們已經(jīng)啟用了Guest賬戶,從Win98中卻仍然無法訪問Win2000/XP,比如使用了類似瑞星等的防火墻漏洞修補,它會修改”拒絕從網(wǎng)絡(luò)訪問這臺計算機“的策略,按下面的方法修改回來:
開始-> 運行-> gpedit.msc-> 計算機配置-> windows設(shè)置-> 本地策略-> 用戶權(quán)利分配-> 刪除”拒絕從網(wǎng)絡(luò)訪問這臺計算機“中的guest用戶。Win2000/XP與Win98互訪
如果兩臺電腦都使用Win2000/XP操作系統(tǒng),那么組建局域網(wǎng)是一件非常簡單輕松的事情,當(dāng)硬件連接完成后,正常情況下立即可以在”網(wǎng)上鄰居“中看到對方。但如果局域網(wǎng)中有一臺電腦使用Win98,那情況可就不一定了,我們經(jīng)常會發(fā)覺雖然Ping命令可以通過,但仍然無法在”網(wǎng)上鄰居“中實現(xiàn)互訪,這時該怎么辦呢?
對策一:在Win2000/XP中啟用Guest用戶。在Win2000/XP系統(tǒng)安裝之后會缺省建立兩個用戶賬戶,即Administrator(系統(tǒng)管理員)和Guest(來賓賬戶),所有在本地計算機沒有被分配到賬戶的用戶都將默認(rèn)使用Guest賬戶,該賬戶是沒有密碼的。不過,在缺省設(shè)置下,這個Guest賬戶并未被啟用,我們可以從”控制面板|管理工具|計算機管理|本地用戶和組|用戶“中找到”Guest“賬戶,并用鼠標(biāo)右擊打開”Guest屬性“對話框,去除這里的”賬戶已停用“復(fù)選框上的對鉤標(biāo)記,這樣退出后就可以從Win98中訪問到Win2000/XP了。
其實,啟用了Guest賬戶后,最大的好處是從Win98訪問Win2000/XP時就不需要輸入用戶名和密碼了,這種方法比較適合于用戶不確定、訪問量較大的局域網(wǎng),但對家庭用戶來說并不適用。-----對策二:檢查Win2000/XP中是否存在安全策略限制。有時,Win2000/XP”聰明“過了頭,雖然我們已經(jīng)啟用了Guest賬戶,從Win98中卻仍然無法訪問Win2000/XP,這時就要從”控制面板|管理工具|本地安全策略|本地策略|用戶權(quán)利指派“中找到”從網(wǎng)絡(luò)訪問此計算機“或者”拒絕從網(wǎng)絡(luò)訪問這臺計算機“,然后檢查一下其中是否出現(xiàn)了Guest賬戶或者其他對應(yīng)的賬戶,然后根據(jù)不同情況進(jìn)行添加或者刪除即可。-----對策三:停用本地連接上的防火墻。防火墻是充當(dāng)網(wǎng)絡(luò)與外部世界之間的保衛(wèi)邊界的安全系統(tǒng),微軟在WinXP中為用戶提供了一個內(nèi)置的Internet連接防火墻(ICF),啟用后可以限制某些不安全信息從外部進(jìn)入內(nèi)部網(wǎng)絡(luò)。不過,如果您是在本地連接上啟用了這個防火墻,那么就會造成工作組之間無法互訪,出現(xiàn)”XXX無法訪問“、”您可能沒有權(quán)限使用網(wǎng)絡(luò)資源“、”請與這臺服務(wù)器的管理員聯(lián)系以查明您是否有訪問權(quán)限“、”找不到網(wǎng)絡(luò)路徑“等類似的提示,此時請停用本地連接的防火墻屏蔽。-----對策四:為WinXP添加NetBEUI協(xié)議。其實,直接添加NetBEUI協(xié)議對于解決不能互訪的問題有時反而更為簡單一些,而且它可以解決上面提到的啟用防火墻的問題。Win98安裝時會自動安裝NetBEUI協(xié)議,但由于WinXP已經(jīng)不再提供對NetBEUI協(xié)議的技術(shù)支持,因此只能手工添加了。
找出WinXP安裝光盤,進(jìn)入”Valueadd Msft Net Netbeui“文件夾下,這里有Nbf.sys、Netbeui.txt、Netnbf.inf共3個文件,先將Nbf.sys文件復(fù)制到本機的”Windows System32 Drivers“文件夾下(這里的本機指安裝了WinXP的那臺電腦),再將Netnbf.inf文件復(fù)制到本機的”Windows INF“文件夾下,Netbeui.txt文件可有可無。不過,INF文件夾具有隱藏屬性,用戶需要先在WinXP下的”工具|屬性“窗口中選擇顯示文件才可以看到該目錄。
-----對策五:啟用Win98中的”文件及打印機共享“。這是一個很簡單但卻經(jīng)常被人忽略的問題,就是裝有Win2000/XP的機器雖然可以從”網(wǎng)上鄰居“中發(fā)現(xiàn)裝有Win98的機器,但卻無法訪問,這是因為Win98未啟用”允許其他用戶訪問我的文件“而造成的,啟用該選項就可以解決這個問題。
當(dāng)然,除了上面提到的各種原因外,還有兩臺電腦不處于同一工作組中,或者是兩臺電腦的內(nèi)部IP地址發(fā)生了沖突,甚至包括Hub故障、線路故障等。
問題:在客戶機的網(wǎng)上鄰居訪問服務(wù)器時,出現(xiàn)“服務(wù)器沒有設(shè)置事務(wù)處理”,從而無法訪問服務(wù)器的共享資源。在直接輸入IP地址也是一樣??赡艿那闆r:IPC$沒有開啟或者病毒造成的。解決辦法:
方法1:運行Net Share IPC$命令,或者直接把Net Share IPC$加入注冊表RUN啟動項中。方法2:在%Systemroot% SYSTEM32下面有一個WUAMGRE.EXE的文件,把它刪除。方法3:裝個木馬克星,殺毒。不同意上述觀點。
啟用guest絕非好的方法。microsoft在xp,2003等中對guest的默認(rèn)設(shè)置,絕非畫蛇添足。網(wǎng)上鄰居訪問問題很多,下面列舉幾種:
1、無法得到網(wǎng)上鄰居主機列表
除了本機問題外,應(yīng)檢查本機是否可以訪問browser主機或域控制器
還有以下原因:browser本身問題(沒有使用AD,98等主機情況),域控制器GC問題(使用AD情況)。如果局域網(wǎng)中browser正在產(chǎn)生或該主機停用了browser服務(wù)時,就會有此情況。如果局域網(wǎng)中使用的是限制廣播的交換機,應(yīng)使用wins服務(wù)。
對于browser問題可以用nbtstat 查詢,但更好的是使用win2k安裝光盤中的browstat工具,使用browstat sta顯示browser主機,用elect強制重新選舉browser.對于AD, 可以使用nslookup查詢
2、網(wǎng)上鄰居只有部分主機列表,或主機列表不對。
可能的原因包括browser正在更換,某些主機自身設(shè)置了隱藏(如注冊表 LanmanServer Parameters Hidden=1),部分主機無法廣播(交換機限制等等)。解決的辦法參考上面。
3、可瀏覽到主機,但主機不可訪問(無路經(jīng))。
如果使用wins,或dns,檢查它們的解析是否正確,本地lmhost,hosts文件內(nèi)容是否正確,清除本機netbios緩存,或arp緩存。能否用ip地址訪問。
4、瀏覽主機權(quán)限不夠,或根本不出現(xiàn)輸入用戶名、口令。
應(yīng)查看本機登陸帳戶和口令是否在對方主機帳戶中擁有,對方是否啟用了帳戶鎖定,是否已有一個帳戶到該資源的連接(即使沒訪問過,也有可能),可以
使用net use ip ipc$ /d,先刪除任何帳戶連接,然后再訪問,如用net use ip ipc$ ”pass“ /user:”name" 參考資料:回答者:彌勒風(fēng)箏-見習(xí)魔法師 三級 11-20 07:29開啟GUEST(來賓用戶組)點擊控制面板-性能和維護(hù)-管理工具-本地安全策略-本地策略-安全選項-網(wǎng)絡(luò)訪問-本地用戶的共享和安全訪問改成經(jīng)典本地用戶(默認(rèn)的為”僅來賓”)然后在:用戶權(quán)利指派
1)設(shè)置允許從網(wǎng)絡(luò)訪問計算機的用戶帳戶(加入GUEST組)2)設(shè)置禁止從網(wǎng)絡(luò)訪問計算機的用戶帳戶(刪除GUEST組)按以上設(shè)置絕對沒有問題,我剛弄完.不行你找我Q:19137800 ***無法訪問,您可能沒有權(quán)限使用網(wǎng)絡(luò)資源。請與這臺服務(wù)器的管理員聯(lián)系以查明您是否有訪問權(quán)限2006-12-07 21:17居域網(wǎng)內(nèi)兩天機器之間不能互相訪問,和別的機器之間很正常。提示 ***無法訪問,您可能沒有權(quán)限使用網(wǎng)絡(luò)資源。請與這臺服務(wù)器的管理員聯(lián)系以查明您是否有訪問權(quán)限問題補充:能試的問題都試了。誰能解決送上高分,隨便你開口?,F(xiàn)在總結(jié)一下:(1)安裝NWlink IPX/SPX/NetBIOS Compatible Transport Protocol協(xié)議。
(2)開啟guest賬號:右擊我的電腦 管理 用戶有個guest,雙擊之去掉“賬戶已停用”前面的勾。(3)右擊我的電腦 屬性 計算機名,查看該選項卡中出現(xiàn)的局域網(wǎng)工作組名稱
(4)使用winxp防火墻的例外:winxp防火墻在默認(rèn)狀態(tài)下是全面啟用的,這意味著運行計算機的所有網(wǎng)絡(luò)連接,難于實現(xiàn)網(wǎng)上鄰居共享。同時,由于windows防火墻默認(rèn)狀態(tài)下是禁止“文件與打印機共享的”,所以,啟用了防火墻,往往不能共享打印,解決辦法是:進(jìn)入“本地連接”窗口,點 “高級” “設(shè)置” “例外” 在程序與服務(wù)下勾選“文件和打印機共享”。
(5)刪除“拒絕從網(wǎng)絡(luò)上訪問這臺計算機”項中的guest賬戶:運行組策略(gpedit.msc)本地計算機 計算機配置 windows 設(shè)置 安全設(shè)置 本地策略用戶權(quán)利指派拒絕從網(wǎng)絡(luò)訪問這臺計算機。如果其中有g(shù)uest,則將其刪除。(原因是:有時xp的guest是不允許訪問共享的)
(6)取消“使用簡單文件共享”方式:資源管理器 工具 文件夾選項 查看 去掉“使用簡單文件共享(推薦)”前面的勾。
(7)工作組名稱一致。
(8)勾選“Microsoft網(wǎng)絡(luò)的文件和打印機共享”。
(9)運行服務(wù)策略“Services.msc”。啟動其中的“Clipbook Server”(文件夾服務(wù)器):這個服務(wù)允許你們網(wǎng)絡(luò)上的其他用戶看到你的文件夾。當(dāng)然有時你可把它改為手動啟動,然后再使用其他程序在你的網(wǎng)絡(luò)上發(fā)布信息。
(10)win98的計算機無法訪問win2000/winxp的計算機,原因是:win2000/winxp的計算機中的guest用戶被禁用了或者win2000/winxp采用NTFS分區(qū)格式,設(shè)置了權(quán)限控制。一般要允許win98訪問的話,win2000/winxp里的安全控制里不要將everyone的賬號組刪除。
注意:a、如果您沒有加入域并想查看“安全”選項卡,則設(shè)置顯示“安全”選項卡:資源管理器 工具 文件夾選項查看去掉“使用簡單文件共享(推薦)”前面的勾。b、查看文件和文件夾的有效權(quán)限:資源管理器 右擊要查看有效權(quán)限該文件或文件夾 “屬性” 單擊“安全”選項卡 “高級” “有效權(quán)限” “選擇” 在“名稱”框中鍵入用戶或組的名稱,然后單擊“確定”。選中的復(fù)選框表示用戶或組對該文件或文件夾的有效權(quán)限。c、只能在格式化為使用 NTFS 的驅(qū)動器上設(shè)置權(quán)限。
第四篇:手機軟件開發(fā)必學(xué)Android技術(shù)
手機軟件開發(fā)必學(xué)Android技術(shù)
席卷IT培訓(xùn)市場,開發(fā)因其領(lǐng)域新,覆蓋面廣,而受到廣大應(yīng)屆畢業(yè)生的關(guān)注?,F(xiàn)在大學(xué)生空有一張文憑,就業(yè)形勢卻頗為緊張,相反,Android開發(fā)的職位空缺卻相當(dāng)大,所以很多大學(xué)生看準(zhǔn)這塊“肥肉”,紛紛投身Android培訓(xùn),希望通過系統(tǒng)培訓(xùn)解決當(dāng)前就業(yè)難,薪水低的問題。
學(xué)習(xí)Android開發(fā),先要了解主要開發(fā)什么。其實主要是針對Android平臺開發(fā)應(yīng)用軟件和游戲軟件。應(yīng)用軟件涉及種類廣泛,如辦公工具、通信工具、視頻播放工具、閱讀器等,在智能手機普及的今天,手機用戶對于各種應(yīng)用軟件的需求越來越高。這個時候不但需要大量的Android人才儲備,還對其技術(shù)有了更高的要求。而手機游戲是目前最受年輕人喜愛的,趣味性更強,薪水也樂觀。如此耀眼的舞臺,自然給了年輕人更多發(fā)揮的空間,但這里要注意,學(xué)習(xí)Android開發(fā),需要對軟件開發(fā)感興趣,具備一定的Java基礎(chǔ)。
甲骨文盈佳科技通過一個多月的零基礎(chǔ)階段教學(xué),讓學(xué)員掌握扎實的編程功底,課程內(nèi)容包含Java開發(fā)環(huán)境、編程語言基礎(chǔ)、面向?qū)ο笏枷搿⒃O(shè)計模式、數(shù)據(jù)結(jié)構(gòu)等。而在學(xué)員掌握基本的Android開發(fā)能力后,甲骨文盈佳科技第三階段教學(xué),會重點講授Android游戲開發(fā),利用四周的時間,使學(xué)員可以掌握基于Cocos2d框架進(jìn)行游戲開發(fā)的能力。
其實大學(xué)生能有足夠遠(yuǎn)見去學(xué)一門技術(shù),說明能夠認(rèn)識自身問題。選擇Android開發(fā)這個新領(lǐng)域,發(fā)揮自身學(xué)習(xí)能力強的優(yōu)勢,在培訓(xùn)中鍛煉自己實際操作的能力,彌補動手能力弱,無項目經(jīng)驗的弱點,自然可以從根本上解決大學(xué)生就業(yè)問題?,F(xiàn)在移動互聯(lián)網(wǎng)屬于朝陽產(chǎn)業(yè),正敞開懷抱吸納Android開發(fā)人才。今天選擇學(xué)習(xí)Android開發(fā),就是為今后的成功打下堅實的基石。
第五篇:手機Android系統(tǒng)常用控件總結(jié)
找工作,上長沙英才網(wǎng)
手機Android系統(tǒng)常用控件總結(jié)
Notepad++編寫 可以負(fù)責(zé)粘貼到其中去 看得更清楚。(內(nèi)容包括了Android中的大部分常用控件及其事件的監(jiān)聽)第一章
1.1 Android中src文件夾包含項目的所有包及其資源文件,res文件夾包含了項目中所有的資源。比如:程序圖標(biāo)(drawable),布局文件(layout),常量(value),音頻文件(raw)R.java是在創(chuàng)建項目是自動生成的只讀文件,不可更改此文件。R文件其作用:是定義項目中所有資源的索引文件。
1.2 AndroidManfest.xml 如下:
package=“Android.Summary” //引用程序包名 android:versionCode=“1” android:versionName=“1.0”> 找工作,上長沙英才網(wǎng)
1.3 String.xml如下:
Resources r = this.getContext().getResources();//通過Context的getResource()實例化一個Resources對象
String app_name =((String)r.getString(R.string.app_name));//然后通過getString()方法取得指定的索引的字符串。項目中所有常量都可以在String.xml文件中定義
String hello =((String)r.getString(R.string.hello));
1.4 main.xml如下:
找工作,上長沙英才網(wǎng)
android:orientation=“vertical” //版面配置的方式。此為自上到下為垂直配置,“horizontal”為水平配置 android:layout_width=“fill_parent” //定義當(dāng)前視圖在屏幕上所占的寬度,“fill_parent”為填充整個屏幕寬度 /*android:layout_weight=“50”*/ //用于給一個布局中多個視圖的重要度賦值 android:layout_height=“fill_parent” //定義當(dāng)前視圖在屏幕上所占的高度,...........................高度 > android:text=“@string/hello” //在視圖上顯示的內(nèi)容,此處引用了@String中的hello字符串 />
1.5 src下的java 如下: package Android.Summary;
import android.app.Activity;import android.os.Bundle;
public class SummaryActivity extends Activity { //繼承自Activity /** Called when the activity is first created.*/ @Override
找工作,上長沙英才網(wǎng)
public void onCreate(Bundle savedInstanceState){ //重寫onCreate()方法
super.onCreate(savedInstanceState);setContentView(R.layout.main);//設(shè)置要顯示的布局 } } 第二章
2.1 Android應(yīng)用程序由四個模塊組成:Activity,Service,Intent,ContentProvider(注意:一個應(yīng)用程序不一定包含全部的四個模塊).在使用時必須在AandroidManfest中進(jìn)行聲明。
Activity可以理解為用戶看到屏幕,主要用于處理應(yīng)用程序的整體性工作。如: a.監(jiān)聽系統(tǒng)事件,觸屏事件,為用戶顯示指定的View,啟動其他Activity等。b.所有應(yīng)用的Activity都繼承于android.app.Activity,該類是Android提供的基層類。
c.一個Activity通常就是一個單獨的屏幕。d.每一個活動都被實現(xiàn)為一個獨立的類。e.大多數(shù)的應(yīng)用程序都是由多個Activity組成。
Intent Aandroid中主要用Intent類實現(xiàn)從一個Activity跳轉(zhuǎn)到另一個Activity。在Intent的描述結(jié)構(gòu)中,有兩個重要的部分:動作和對應(yīng)的數(shù)據(jù)。
典型的動作有MAIN,VIEW,PICK,EDIT.而動作對應(yīng)的數(shù)據(jù)則以URI的形式表示。例如:要查一個人的聯(lián)系方式,需要創(chuàng)建一個動作類型View的Intent ,以及一個表示這個人的URI.Intent的使用:
button1.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ Intent intent = new Intent();//創(chuàng)建一個Intent對象
intent.setClass(Activity01.this,Activity02.class);//指明要啟動的另一Activity02 startActivity(intent);//啟動一個新的Activity
找工作,上長沙英才網(wǎng)
Activity01.this.finish();//關(guān)閉當(dāng)前Activity01 } });這里需要注意在Android中對新啟動的Activity進(jìn)行聲明。聲明方式:
IntentReceiver 如果希望Android應(yīng)用能夠?qū)ν獠渴录ㄈ珉娫挻蛉霑r,數(shù)據(jù)網(wǎng)絡(luò)可用時,)做出響應(yīng),可用使用IntentReceiver.雖然IntentReceiver在如上事件發(fā)生
時會使用NotificationManager通知用戶,但它并不能生產(chǎn)UI。IntentReceiver可以在AndroidManifest.xml中注冊,也可在代碼中使用Context.registerReceiver 進(jìn)行注冊。當(dāng)IntentReceiver被觸發(fā)時,系統(tǒng)會在需要的時候啟動應(yīng)用。各種應(yīng)用還可以通過ContentReceiver()將他們自己的IntentReceiver廣播出去。???????
Content Provider 作用:主要用于不同應(yīng)用程序中的數(shù)據(jù)的傳遞。Content Provider 是一個特殊的存儲數(shù)據(jù)的類型。Android自身提供現(xiàn)成的Content Provider:Contacts ,Browser,CallLog,Settings,MediaStore 應(yīng)用可用通過唯一的ContentResolver界面來使用具體的Conten Provider,然后可以用ContentResolver提供的方法來使用你需要的Content Provider 其中,ContentResolver提供的方法有query(),insert(),update()等。URI----String形式的Content Provider的完整路徑。
下面這個這個例子通過ContentProvider獲取電話本中的數(shù)據(jù),然后顯示到TextView中去。
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){
找工作,上長沙英才網(wǎng)
TextView textView = new TextView(this);//得到TextView對象 String string = “";super.onCreate(savedInstanceState);
ContentResolver resolver = getContentResolver();//得到ContentResolver對象 Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得電話本中開始一項的光標(biāo),通過query方法查詢出符合標(biāo)準(zhǔn)的電話本記錄 //向下移動光標(biāo)
while(cursor.moveToNext()){ //取得聯(lián)系人名字
int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);String name = cursor.getString(name_index);//取得電話號碼
int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);String number = cursor.getString(number_index);
string +=(name+”:“+number+”n“);} cursor.close();textView.setText(string);//設(shè)置TextView顯示的內(nèi)容
setContentView(textView);//顯示到屏幕上 其實TextView也是View的一種 } } 注意:在使用這些模塊中用到了讀取聯(lián)系人的API,所以必須在AndroidManifest.xml中聲明
聲明方式為:
找工作,上長沙英才網(wǎng)
Service 后臺服務(wù),沒有界面
啟動service方法: a.Context.startService()b.Context.bindService()//與上一種方法不同處 如果這個Service沒有處于啟動狀態(tài),則將其啟動
下面這個例子以Activity中的倆個控件來控制播放一首Mp3.(例中:需要在res文件夾中創(chuàng)建一個raw文件夾 然后放入一首MP3)
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);
//從main.xml布局中獲得Button對象
Button button_start =(Button)findViewById(R.id.start);Button button_stop =(Button)findViewById(R.id.stop);//設(shè)置按鈕(Button)監(jiān)聽
button_start.setOnClickListener(start);button_stop.setOnClickListener(stop);} //開始按鈕
private OnClickListener start = new OnClickListener(){ public void onClick(View v){ //開啟Service startService(new Intent(”com.yarin.Android.MUSIC“));} };//停止按鈕
找工作,上長沙英才網(wǎng)
private OnClickListener stop = new OnClickListener(){ public void onClick(View v){ //停止Service stopService(new Intent(”com.yarin.Android.MUSIC“));} };}
public class MusicService extends Service{ //MediaPlayer對象
private MediaPlayer player;
public IBinder onBind(Intent arg0){ return null;} public void onStart(Intent intent, int startId){ super.onStart(intent, startId);//這里可以理解為裝載音樂文件
player = MediaPlayer.create(this, R.raw.test);//開始播放 player.start();}
public void onDestroy(){ super.onDestroy();//停止音樂-停止Service player.stop();} }
AndroidManifest.xml文件中
找工作,上長沙英才網(wǎng)
2.2 Aandrod的生命周期
public class Activity02 extends Activity{ private static final String TAG = ”Activity02“;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main2);Log.v(TAG, ”onCreate“);} public void onStart(){ super.onStart();Log.v(TAG, ”onStart“);} public void onResume(){ super.onResume();Log.v(TAG, ”onResume“);} public void onPause(){ super.onPause();Log.v(TAG, ”onPause“);} public void onStop(){ super.onStop();Log.v(TAG, ”onStop“);
找工作,上長沙英才網(wǎng)
} public void onDestroy(){ super.onDestroy();Log.v(TAG, ”onDestroy“);} public void onRestart(){ super.onRestart();Log.v(TAG, ”onReStart“);} } 這些方法都是系統(tǒng)自動調(diào)用的。
第三章 3.1 事件處理
* 控件事件通過設(shè)置其控件的監(jiān)聽器來監(jiān)聽并處理事件 * 按鍵按下事件:通過重寫onKeyDown方法 * 按鍵彈起事件:通過重寫onKeyUp方法 * 觸筆點擊事件:通過實現(xiàn)onTouchEvent方法 * 示例中使用了Toast控件:
* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
public class Activity01 extends Activity{
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲得Button對象
Button button_ok =(Button)findViewById(R.id.ok);
找工作,上長沙英才網(wǎng)
button_ok.setOnClickListener(new Button.OnClickListener(){------------------------//設(shè)置Button控件監(jiān)聽器
public void onClick(View v){ //這里處理事件
DisplayToast(”點擊了OK按鈕“);} });}
/* 按鍵按下所觸發(fā)的事件*/ public boolean onKeyDown(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”按下:中鍵“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”按下:上方向鍵“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”按下:下方向鍵“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”按下:左方向鍵“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”按下:右方向鍵“);break;} return super.onKeyDown(keyCode, event);}
找工作,上長沙英才網(wǎng)
/* 按鍵彈起所觸發(fā)的事件*/ public boolean onKeyUp(int keyCode, KeyEvent event){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: DisplayToast(”彈起:中鍵“);break;case KeyEvent.KEYCODE_DPAD_UP: DisplayToast(”彈起:上方向鍵“);break;case KeyEvent.KEYCODE_DPAD_DOWN: DisplayToast(”彈起:下方向鍵“);break;case KeyEvent.KEYCODE_DPAD_LEFT: DisplayToast(”彈起:左方向鍵“);break;case KeyEvent.KEYCODE_DPAD_RIGHT: DisplayToast(”彈起:右方向鍵“);break;} return super.onKeyUp(keyCode, event);} //用于響應(yīng)按鍵重復(fù)點擊,官方API指出onKeyMultiple方法總是返回false,即它沒有handle,因此必須重寫才能實現(xiàn)-------------------此方法沒用過具體情況怎么樣不是很清楚?
public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){
return super.onKeyMultiple(keyCode, repeatCount, event);}
/* 觸筆事件*/
找工作,上長沙英才網(wǎng)
public boolean onTouchEvent(MotionEvent event){ int iAction = event.getAction();//利用getAction得到所執(zhí)行的動作 if(iAction == MotionEvent.ACTION_CANCEL || iAction == MotionEvent.ACTION_DOWN || iAction == MotionEvent.ACTION_MOVE){ return false;} //得到觸筆點擊的位置 int x =(int)event.getX();int y =(int)event.getY();//將獲得的坐標(biāo)轉(zhuǎn)成String類型的方法 DisplayToast(”觸筆點擊坐標(biāo):(“+Integer.toString(x)+”,“+Integer.toString(y)+”)“);
return super.onTouchEvent(event);}
/* 顯示Toast */ public void DisplayToast(String str){ Toast.makeText(this, str, Toast.LENGTH_SHORT).show();} } 我們分析了一些常用事件處理方式。每一個鍵都對應(yīng)一個鍵值。當(dāng)然也可根據(jù)需要來改變一些鍵的功能,需要我們自己構(gòu)建KeyEvent對象------------------有待進(jìn)一步學(xué)習(xí)
構(gòu)造KeyEvent對象的幾種方法: KeyEvent(int action,int code);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);
找工作,上長沙英才網(wǎng)
KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);例:
public class Activity01 extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main);} public boolean onKeyDown(int keyCode, KeyEvent event){ //這里構(gòu)建KeyEvent對象,其功能為返回鍵的功能 //因此我們按任意鍵都會執(zhí)行返回鍵功能
KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);
//這里傳入的參數(shù)就是我們自己構(gòu)建的KeyEvent對象key return super.onKeyDown(key.getKeyCode(), key);} } 3.2 常用控件 Button xml設(shè)計
代碼設(shè)計Button button = new Button(this);
找工作,上長沙英才網(wǎng)
button.setText(”我是Button“);button.setWidth(123);//設(shè)置寬度 button.setHeight(123);//設(shè)置高度
button.setTextColor(Color.BLUE);//設(shè)置文字顏色 button.setTextSize(123);//設(shè)置字體大小
button.setBackgroundColor(Color.BLUE);//設(shè)置控件背景色
監(jiān)聽器
button.setOnClickListener(new Button.OnClickListener(){//設(shè)置按鈕的事件監(jiān)聽
public void onClick(View v){ //處理按鈕事件產(chǎn)生一個Toast.利用button.getText()得到按鈕顯示的內(nèi)容
Toast toast = Toast.makeText(Activity01.this, ”你點擊了““+button.getText()+””按鈕!“, Toast.LENGTH_LONG);//設(shè)置toast顯示的位置
toast.setGravity(Gravity.TOP, 0, 150);//顯示該Toast toast.show();} });-TextView 一個用來顯示文本的控件 xml設(shè)計 找工作,上長沙英才網(wǎng) android:text=”你好“/> android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:textSize=”30sp“ android:singleLine=”true“ android:layout_below=”@id/imageView_handler“//在什么下 android:gravity =”left“ //用于設(shè)置View中內(nèi)容相對于View組件的對齊方式,android:layout_gravity//用于設(shè)置View組件相對于Container的對齊方式。 android:paddingLeft=”30px“ // 按鈕上設(shè)置的內(nèi)容離按鈕左邊邊界30個像素 android:layout_marginLeft=”30px“ //整個按鈕離左邊設(shè)置的內(nèi)容30個像素 android:layout_weight=”1“//控件權(quán)重 即占的比例 默認(rèn)值為0 android:gravity=”center_horizontal“//水平居中 android:padding=”3dip“ 代碼設(shè)計TextView textView = new TextView(this);//聲明對象 textView.setTextColor(Color.RED);//設(shè)置字體顏色 textView.setTextSize(20);//設(shè)置字體大小 textView.setBackgroundColor(Color.BLUE);//控件背景色 textView.setText(”你好“)//顯示的文字 textView.setHeight textView.setWidth textView.setVisibility(GONE/VISIBLE);//設(shè)置為不可見/可見 textView.setGravity(Gravity.CENTER);//設(shè)置文字權(quán)重 找工作,上長沙英才網(wǎng) 監(jiān)聽器TextView textView = new TextView(this);//得到對象 textview.setOnClickListener(new TextView.OnClickListener(){------------TextView監(jiān)聽器 public void onClick(View v){ } });---ImageButton 帶圖標(biāo)的按鈕 xml設(shè)計 代碼中設(shè)計 imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代碼中設(shè)計使用的圖片(得到對象后) 監(jiān)聽器 imageButton.setOnClickListener(new Button.OnClickListener(){--------------ImageButton監(jiān)聽器 @Override public void onClick(View v){ //創(chuàng)建對話框 Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this) 找工作,上長沙英才網(wǎng) .setTitle(”ImageButton2“).setMessage(”跳轉(zhuǎn)到系統(tǒng)圖片“).setPositiveButton(”確定“, new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which){ // TODO Auto-generated method stub imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));} }).create();dialog.show();} });---EditText xml設(shè)計 代碼設(shè)計EditText editText = new EditText(this);//得到EditText對象 editText.setTextSize(20);//設(shè)置字體大小 找工作,上長沙英才網(wǎng) editText.setHint(”請輸入賬號“);//設(shè)置當(dāng)m_EditText中為空時提示的內(nèi)容 監(jiān)聽器 editText.setOnKeyListener(new EditText.OnKeyListener(){----------EditText監(jiān)聽器 @Override public boolean onKey(View arg0, int arg1, KeyEvent arg2){ // 得到文字,將其顯示到TextView中 m_TextView.setText(”文本框中內(nèi)容是:“ + m_EditText.getText().toString());return false;} });--------------------CheckBox 多項選擇 需要對沒有按鈕設(shè)置監(jiān)聽器 xml設(shè)計 checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){//對每個選項設(shè)置事件監(jiān)聽-------------------CheckBox監(jiān)聽器 @Override 找工作,上長沙英才網(wǎng) public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){ DisplayToast(”你選擇了:“+m_CheckBox1.getText());} } });----------------------Spinner 下拉列表 下面一個例子將可選內(nèi)容通過ArrayAdapter和下拉列表連接起來。設(shè)置監(jiān)聽器 通過setVisibility方法設(shè)置當(dāng)前顯示項 main.xml 找工作,上長沙英才網(wǎng) /> public class Activity01 extends Activity{ private static final String[] string = { ”O(jiān)型“, ”A型“, ”B型“, ”AB型“, ”其他“ }; private TextView m_TextView;private Spinner m_Spinner;private ArrayAdapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_TextView =(TextView)findViewById(R.id.TextView1);m_Spinner =(Spinner)findViewById(R.id.Spinner1); //將可選內(nèi)容與ArrayAdapter連接 adapter = new ArrayAdapter //設(shè)置下拉列表的風(fēng)格 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //將adapter添加到m_Spinner中 m_Spinner.setAdapter(adapter); //添加Spinner事件監(jiān)聽 找工作,上長沙英才網(wǎng) m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){--------------------------Spinner監(jiān)聽器 @Override public void onItemSelected(AdapterView> arg0, View arg1, int arg2, long arg3){ m_TextView.setText(”你的血型是:“ + string[arg2]);//設(shè)置顯示當(dāng)前選擇的項 arg0.setVisibility(View.VISIBLE);} @Override public void onNothingSelected(AdapterView> arg0){ // TODO Auto-generated method stub });} } }---------RadioGroup , RadioButton 單選選擇控件 一個單選選擇由兩部分組成,分別是前面的選擇按鈕和后面的內(nèi)容。按鈕通過RadioButton來實現(xiàn),答案通過RadioGroup來實現(xiàn) 如果確定是選擇哪一項那就要設(shè)置監(jiān)聽器setOnCheckedChangeListener.下面有一例子:本例中使用到了String.xml文件來定義常量。string.xml 找工作,上長沙英才網(wǎng) main.xml 找工作,上長沙英才網(wǎng) android:layout_width=”wrap_content“ android:layout_height=”wrap_content“ android:text=”@string/RadioButton1“ /> public class Activity01 extends Activity{ TextView m_TextView;RadioGroup m_RadioGroup;RadioButton m_Radio1, m_Radio2, m_Radio3, m_Radio4; @Override 找工作,上長沙英才網(wǎng) public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.main); m_RadioGroup =(RadioGroup)findViewById(R.id.RadioGroup01);//獲得RadioGroup對象 m_Radio1 =(RadioButton)findViewById(R.id.RadioButton1);//獲得4個RadioButton對象 m_Radio2 =(RadioButton)findViewById(R.id.RadioButton2);m_Radio3 =(RadioButton)findViewById(R.id.RadioButton3);m_Radio4 =(RadioButton)findViewById(R.id.RadioButton4); /* 設(shè)置事件監(jiān)聽 */ m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){---------------------------RadioGroup監(jiān)聽器 @Override public void onCheckedChanged(RadioGroup group, int checkedId){ if(checkedId == m_Radio2.getId()){ DisplayToast(”正確答案:“ + m_Radio2.getText()+ ”,恭喜你,回答正確!“);}else{ DisplayToast(”請注意,回答錯誤!“);} } });} public void DisplayToast(String str)//顯示Toast{ Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);//設(shè)置toast顯示的位置 找工作,上長沙英才網(wǎng) toast.setGravity(Gravity.TOP, 0, 220);//顯示該Toast toast.show();} }--------------AutoCompletTextView 和MultiAutoCompleteTextView 作用:自動提示 下面例中用到了ArrayAdapter autoCompletTextView.xml //如何實現(xiàn)如果輸入的字符不在其范圍內(nèi)的也能得到提示 是繼承TextWatcher? 找工作,上長沙英才網(wǎng) public class Control_Auto extends Activity { //implements TextWatcher{} public TextView textView_auto; private static final String[] string ={”ni hao“,”ni hao “,”ni hao ma“,”ni zheng de hao ma“,”nshis“}; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.autocompletetextview); //將可選內(nèi)容與適配器ArrayAdapter連接 ArrayAdapter MultiAutoCompleteTextView multiAutoCompletTextView =(MultiAutoCompleteTextView)findViewById(R.id.multiAutoCompleteTextView);AutoCompleteTextView autoCompleteTextView =(AutoCompleteTextView)findViewById(R.id.autoCompleteTextView); autoCompleteTextView.setAdapter(adapter);//將adapter添加到AutoCompletTextView中去 multiAutoCompletTextView.setAdapter(adapter);//將adapter添加到MultAutoCompleteTextView中去 multiAutoCompletTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());} } 找工作,上長沙英才網(wǎng) /* //autoCompleteTextView.addTextChangedListener(this);---此為設(shè)置監(jiān)聽? * 例子中沒有涉及到的屬性(可在布局文件中設(shè)置): AutoCompleteTextView是EditText的子類,所以你可以對它的對象進(jìn)行諸如外觀/字體/顏色等屬性值的設(shè)置。 completionThreshold:它的值決定了你在AutoCompleteTextView至少輸入幾個字符,它才會具有自動提示的功能。另,默認(rèn)最多提示20條。 dropDownAnchor:它的值是一個View的ID,指定后,AutoCompleteTextView會在這個View下彈出自動提示。 dropDownSelector:應(yīng)該是設(shè)置自動提示的背景色之類的。 dropDownWidth:設(shè)置自動提示列表的寬度。 你可以通過setAdapter()來給AutoCompleteTextView添加一個包含候選值列表的適配器(adapter)。--------此處沒實現(xiàn)過? 然而,由于用戶可以輸入一些不在候選值列表的數(shù)據(jù),AutoCompleteTextView不支 持selection listener。不過,你可以注冊一個TextWacther用于當(dāng)用戶輸入文本發(fā)生變化時發(fā)出通知。 -------------------------DatePicker,TimePicker 日期和時間 下例中首先需要在布局文件中定義DatePicker和TimePicker,然后通過Canlendar類獲得系統(tǒng)時間,接著通過init方法將日期傳給DatePicker, 并設(shè)置OnDateChangedListener來監(jiān)聽日期改變,當(dāng)時間被改變時需要設(shè)置setOnTimeChangedListener監(jiān)聽來設(shè)置時間。datepicker_timepicker.xml 找工作,上長沙英才網(wǎng) > 找工作,上長沙英才網(wǎng) public class Date_Time extends Activity{//如何實現(xiàn)日期隨系統(tǒng)不斷變化?要聯(lián)網(wǎng)才能實現(xiàn)?如何變換DatePicker和TimePicker樣式(如顏色,圖片等)? Calendar calendar;TextView textView_date_time;Button button_date_time1;Button button_date_time2;DatePicker datePicker;TimePicker timePicker;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.datepicker_timepicker);calendar = Calendar.getInstance();//得到日歷對象 textView_date_time =(TextView)findViewById(R.id.textView_date_time1);button_date_time1 =(Button)findViewById(R.id.button_date_time1);button_date_time2 =(Button)findViewById(R.id.button_date_time2);datePicker =(DatePicker)findViewById(R.id.datePicker);timePicker =(TimePicker)findViewById(R.id.timerPicker); button_date_time1.setWidth(50);button_date_time1.setHeight(60);button_date_time1.setTextColor(Color.BLUE); timePicker.setIs24HourView(true);//設(shè)置為24小時制 //將日歷初始化為當(dāng)前系統(tǒng)日期,并設(shè)置監(jiān)聽器 datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),-------------DatePicker監(jiān)聽器 找工作,上長沙英才網(wǎng) calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener(){//OnDateChangedListener監(jiān)聽日期的變化 @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){ //設(shè)置日期 calendar.set(1987,10,15);} }); timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){------------TimePicker監(jiān)聽器 @Override public void onTimeChanged(TimePicker view, int hourOfDay, int minute){ //設(shè)置時間 //calendar.set(1987,10,29,23,23,23);//年 月 日 小時 分鐘 秒 textView_date_time.setText(”當(dāng)前時間:“+hourOfDay+” : “+minute);} }); button_date_time1.setOnClickListener(new Button.OnClickListener(){//日期的監(jiān)聽---------------------------Button控件中設(shè)置DatePicker監(jiān)聽器 找工作,上長沙英才網(wǎng) @Override public void onClick(View v){ new DatePickerDialog(Date_Time.this,new DatePickerDialog.OnDateSetListener(){ @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth){ //設(shè)置日歷 textView_date_time.setText(”農(nóng)歷“+year+” 年“+monthOfYear+” 月“+dayOfMonth+” 日“);} },calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)).show();} }); button_date_time2.setOnClickListener(new Button.OnClickListener(){//時間的監(jiān)聽器----------------------------Button控件中設(shè)置TimePicker監(jiān)聽器 @Override public void onClick(View v){new TimePickerDialog(Date_Time.this, new TimePickerDialog.OnTimeSetListener(){ @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute){ //設(shè)置時間 找工作,上長沙英才網(wǎng) textView_date_time.setText(”北京時間:“+hourOfDay+” : “+minute);} },calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();}});} } ---------------Menu 操作應(yīng)用程序的菜單選項 第一個例子:通過XML文件來實現(xiàn) menu_com.xml
public class Menu_Xml extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.此為所以顯示的界面id);} public boolean onCreateOptionsMenu(Menu menu){//創(chuàng)建menu MenuInflater inflater = getMenuInflater();//設(shè)置menu界面
inflater.inflate(R.layout.menu_com, menu);
找工作,上長沙英才網(wǎng)
return true;} public boolean onOptionsItemSelected(MenuItem item){//處理菜單事件 switch(item.getItemId()){ case R.id.about: Menu_Xml.this.finish();case R.id.skip: Intent intent = new Intent();intent.setClass(Menu_Xml.this, Menu_add.class);//跳轉(zhuǎn)到Menu_add中去
startActivity(intent);Menu_Xml.this.finish();} return true;} } =============== 第二個例子:在代碼中生成Menu 此例中包含倆個方法 注意區(qū)分注釋掉的為另一種增加Menu的方法
public class Menu_add extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.toast);} public boolean onCreateOptionsMenu(Menu menu){//創(chuàng)立menu /*為Menu添加內(nèi)容參數(shù):Menu.add()方法第一個參數(shù)表示給這個新增的菜單項分配一個分組號;
* 第二個參數(shù)表示給這個新增的菜單項分配一個唯一標(biāo)識id;第三個參數(shù)為菜單項的序號;
找工作,上長沙英才網(wǎng)
* 第四個參數(shù)為菜單項的標(biāo)題。
我們可以通過調(diào)用Menu.setItemShown()或者M(jìn)enu.setGroupShown()方法來顯示或隱藏一些菜單項。
這里要注意的一個地方是:菜單項的顯示順序是按代碼中添加的順序來的,也就是說Menu.add()方法
只能在菜單的最后面新增一個菜單項。另外,第一個參數(shù)的分組標(biāo)識,不會改變菜單項的顯示順序。
方法一:
//menu.add(0,0,0,R.string.menu1);方法一 //menu.add(0,1,1,R.string.menu2);方法二:
SubMenu subMenu = menu.addSubMenu(1, 1, 2, ”選項“);//此方法和menu方法類似
subMenu.add(13,13,13, ”到Content_Menu“);subMenu.add(13,24,24,”到Menu_Xml“);
return true;} public boolean onOptionsItemSelected(MenuItem item){//處理Menu事件 switch(item.getItemId()){//getItemId()得到菜單項的ID,即上面的第二個參數(shù) case 13: Intent intent1 = new Intent();intent1.setClass(Menu_add.this, Context_Menu.class);startActivity(intent1);Menu_add.this.finish();case 23: Intent intent = new Intent();intent.setClass(Menu_add.this, Menu_Xml.class);//跳轉(zhuǎn)到其他界面中去
找工作,上長沙英才網(wǎng)
startActivity(intent);Menu_add.this.finish();break;} return true;} } ============== 第三個例子:Context Menu的創(chuàng)建:
概述:Android 的上下文菜單類似于PC 上的右鍵菜單。當(dāng)為一個視圖注冊了上下文菜單之后,長按(2 秒左右)這個視圖對象就會彈出一個浮動菜單,即上下文菜單。任何視圖都可以
注冊上下文菜單,不過,最常見的是用于列表視圖ListView的item。
注意:Android 的上下文菜單不支持圖標(biāo)或快捷鍵。
創(chuàng)建一個上下文菜單的步驟:
1.覆蓋Activity 的onCreateContenxtMenu()方法,調(diào)用Menu 的add 方法添加菜單項(MenuItem)。
2.覆蓋Activity 的onContextItemSelected()方法,響應(yīng)上下文菜單菜單項的單擊事件。
3.調(diào)用registerForContextMenu()方法,為視圖注冊上下文菜單。menu_com2.xml
找工作,上長沙英才網(wǎng)
public class Context_Menu extends Activity{ public TextView textView_context_Menu;public Button buttont_context_Menu;
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);setContentView(R.layout.menu_com2);textView_context_Menu =(TextView)findViewById(R.id.textView_context_Menu);buttont_context_Menu =(Button)findViewById(R.id.button_context_Menu);
registerForContextMenu(textView_context_Menu);registerForContextMenu(buttont_context_Menu);//這里的registerForContextMenu()也可以用下面的語句替代 //getContentView().setOnCreateContextMenuListener(this);}
找工作,上長沙英才網(wǎng)
//創(chuàng)建Context Menu public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){ if(v==textView_context_Menu){ menu.setHeaderTitle(”這個是什么?“);menu.add(0,0,0,”蘋果“);menu.add(0,1,1,”獼猴桃“);}else if(v==buttont_context_Menu){ menu.setHeaderTitle(”我知道是什么了!“);menu.add(2,2,2,”不是蘋果“);menu.add(2,3,3,”就是獼猴桃“);} super.onCreateContextMenu(menu, v, menuInfo);} //菜單單擊響應(yīng) @Override public boolean onContextItemSelected(MenuItem item){ //獲取當(dāng)前被選擇的菜單項的信息 switch(item.getItemId()){ case 1: Toast toast=Toast.makeText(Context_Menu.this, ”你點擊了“+textView_context_Menu.getText(), Toast.LENGTH_LONG);toast.setGravity(Gravity.TOP, 100, 300);toast.show();break;case 3: Toast toast1=Toast.makeText(Context_Menu.this, ”你點擊了“+buttont_context_Menu.getText(), Toast.LENGTH_LONG);toast1.setGravity(Gravity.TOP, 100, 300);toast1.show();break;
找工作,上長沙英才網(wǎng)
} return true;} } ============== 第四個例子:動態(tài)Menu 此為動態(tài)Menu的實現(xiàn),采用的是代碼布局(非XML布局)。此種Memu用在什么情況下,具體該怎么做?
public class Trends_Menu extends Activity{ LinearLayout linearLayout;TextView textView;public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);linearLayout = new LinearLayout(this);linearLayout.setBackgroundColor(android.graphics.Color.BLUE);//設(shè)置背景色
linearLayout.setOrientation(linearLayout.VERTICAL);//設(shè)置布局方向
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);textView= new TextView(this);//創(chuàng)建TextView對象 textView.setBackgroundColor(Color.YELLOW);//設(shè)置背景顏色 textView.setText(”Trends_Men“);textView.setTextSize(50);//textView.setHeight(50);//textView.setWidth(100);textView.setTextColor(Color.RED);//設(shè)置字體顏色
找工作,上長沙英才網(wǎng)
linearLayout.addView(textView,params);//將textView添加到linearLayout中去
setContentView(linearLayout);//設(shè)置ui布局 } public boolean onPrepareOptionsMenu(Menu menu){ String string = textView.getText().toString();if(string.equals(”Trends_Menu“)){ menu.clear();//清掉菜單
MenuItem item = menu.add(0,1,1,”to Menu“);item.setIcon(android.R.drawable.alert_dark_frame);//android自帶的圖標(biāo) } if(string.equals(”Menu“)){ menu.clear();MenuItem item = menu.add(1,2,2,”to Trends_Menu“);item.setIcon(android.R.drawable.alert_light_frame);} menu.add(0,2,2,”Now is“+string);return super.onPrepareOptionsMenu(menu);} }
-------------ListView 一個用來顯示列表的控件 xml設(shè)計
代碼設(shè)計
第一個例子:
public class ListView3 extends ListActivity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);
找工作,上長沙英才網(wǎng)
String[] string={”華中科技“,”天龍大廈“,”科技園“,”天天樂園“};//string 是用來要存放的數(shù)據(jù)
//android.R.layout.simple_expandable_list_item_1為XML的配置文件, 用來設(shè)置列表中每一行的窗口 setListAdapter(new ArrayAdapter
* 在配置文件中要注意的是android:list 是系統(tǒng)自定義的不是隨便可以取的,否則會出現(xiàn)找不到ListView ==================== 第二個例子: textView_chrild.xml 找工作,上長沙英才網(wǎng) android:layout_height=”fill_parent“ android:paddingLeft=”50px“ android:paddingTop=”5px“ android:paddingBottom=”5px“ android:text=”no date“ android:textSize=”30sp“ />
找工作,上長沙英才網(wǎng)
找工作,上長沙英才網(wǎng)
map1.put(”list1“, ”map1“);map2.put(”list1“, ”map2“);list1.add(map1);list1.add(map2);//定義一個List,該List對象為第一個一級條目 提供數(shù)據(jù) List
//定義一個List,該List對象用來存儲所有二級條目對象 List>> list0 = new ArrayList
>>();list0.add(list21);list0.add(list31);
SimpleExpandableListAdapter simple = new SimpleExpandableListAdapter(找工作,上長沙英才網(wǎng)
this,//context list1,//一級條目數(shù)據(jù)
R.layout.expandable_group,//用來設(shè)置一級條目樣式的布局文件 new String[]{”list1“}, //指定一級條目數(shù)據(jù)的Key new int[]{R.id.textView_group},//指定一級條目數(shù)據(jù)顯示的控件id list0, //二級條目數(shù)據(jù)
R.layout.expandable_chrild,//用來設(shè)置二級條目樣式的布局文件 new String[]{”list“}, //指定二級條目數(shù)據(jù)的Key new int[]{R.id.textView_chrild});//指定二級條目數(shù)據(jù)顯示的控件id
setListAdapter(simple);//將SimpleExpandableListAdapter對象設(shè)置給當(dāng)前的Activity } } ============================= 第三個例子:自定義ListView public class ImageTextView extends LinearLayout{ public TextView textView;public ImageView imageView;
public ImageTextView(Context context, String string,Drawable drawable){----* 注意這里并沒用在xml定義控件
super(context);// TODO Auto-generated constructor stub this.setOrientation(VERTICAL);//設(shè)置為水平布局 imageView = new ImageView(context);imageView.setImageDrawable(drawable);imageView.setPadding(2, 5, 5, 0);//設(shè)置位置
addView(imageView,new LinearLayout.LayoutParams(40,30));
找工作,上長沙英才網(wǎng)
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));
textView = new TextView(context);textView.setText(”title“);textView.setTextSize(20);addView(textView,new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,30));} * 這是一個線性布局的View,其中包含一個TextView 和一個ImageView.* 且為垂直布局 }-----------------------public class ListCombinAdapter extends BaseAdapter{------------繼承BaseAdapter 且必須重寫五個函數(shù) private Context wcontext;private List
public ListCombinAdapter(Context context){ this.wcontext=context;list = new ArrayList
找工作,上長沙英才網(wǎng)
} @Override public Object getItem(int position){ return list.get(position);//得到對象在List數(shù)組中的位置 } @Override public long getItemId(int position){ return(long)position;} public long getPosition(Object item){ return list.indexOf(item);//得到對象在list中的索引 } @Override public View getView(int position, View convertView, ViewGroup parent){//得到一個顯示在屏幕上的View ImageTextView imageTextView;if(convertView == null){//判斷原來的View是否存在 如果不存在利用ImageTextView創(chuàng)建一個View imageTextView = new ImageTextView(wcontext,(String)list.get(position).textView.getText(),list.get(position).imageView.getDrawable());}else{ imageTextView =(ImageTextView)convertView;//強制轉(zhuǎn)型 imageTextView.textView = list.get(position).textView;imageTextView.imageView = list.get(position).imageView;} return imageTextView;} public void addItem(String text,Drawable drawable){ list.add(new ImageTextView(wcontext,text,drawable));//將創(chuàng)建好的ImageTextView對象加入到list中去
找工作,上長沙英才網(wǎng)
} }----------------------public class ListView4Activity extends ListActivity {//定制自己的adapter @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);//setContentView(R.layout.main);//不需要此項
ListCombinAdapter listCombinAdapter = new ListCombinAdapter(this);listCombinAdapter.addItem(”不知道此處的字符串起什么作用“,getResources().getDrawable(R.drawable.image2));listCombinAdapter.addItem(”不知道此處的字符串起什么作用“, getResources().getDrawable(R.drawable.image3));setListAdapter(listCombinAdapter);} } ===================== 第四個例子: simpleadapter2.xml 找工作,上長沙英才網(wǎng) android:orientation=”horizontal“> 找工作,上長沙英才網(wǎng) android:gravity=”right“ android:textSize=”10pt“ />
public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);ArrayList