亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3878 | 回復(fù): 17
打印 上一主題 下一主題

《android編程寶典》-連載。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-04-15 14:20 |只看該作者 |倒序瀏覽
內(nèi)容簡介
《Android編程寶典》講解Android手機(jī)平臺開發(fā)從入門到精通的相關(guān)知識,全書內(nèi)容共分為3篇。
  第1篇是Android基礎(chǔ)編程,主要介紹Android平臺編程的基礎(chǔ)知識,包括活動、意圖、廣播接受者、用戶界面布局、常用控件、菜單、通知、鬧鐘服務(wù)、事件處理、數(shù)據(jù)存儲、內(nèi)容提供者以及Android異步處理機(jī)制等相關(guān)內(nèi)容。基礎(chǔ)編程這一篇所涉及的知識點貫穿于Android客戶端開發(fā)工作的始終,是進(jìn)行Android客戶端開發(fā)的一條重要線索。
  第2篇是Android高級編程,主要介紹Android平臺編程的高級知識,包括服務(wù)、基于位置的服務(wù)、網(wǎng)絡(luò)編程、多媒體、傳感器、圖形和圖像、硬件接口以及Android的桌面組件等相關(guān)內(nèi)容。
  第3篇是Android實戰(zhàn)應(yīng)用。此篇介紹了一個基于B/S架構(gòu)的電子訂餐系統(tǒng),包括Android客戶端的開發(fā)以及服務(wù)端的開發(fā)等相關(guān)知識,服務(wù)端采用了完整的JAVA EE分層架構(gòu),整個應(yīng)用具有良好的可擴(kuò)展性和示范性。
  本書并不局限于枯燥的理論介紹,而是采用實例的方式來講授知識點,以便讀者可以更好地閱讀以及進(jìn)行相關(guān)知識點的理解和發(fā)散。在內(nèi)容上,涉及當(dāng)前移動互聯(lián)網(wǎng)領(lǐng)域一些擁有大量用戶數(shù)的客戶端應(yīng)用的一些特色功能的原理介紹以及代碼實現(xiàn)。
  如果讀者對Java語法比較熟悉,并且有一定的事件驅(qū)動的程序編程經(jīng)驗,那么閱讀本書就可以很快掌握Android應(yīng)用開發(fā)。本書適合想全面學(xué)習(xí)Android開發(fā)的人員閱讀,對經(jīng)常使用Android平臺做開發(fā)的人員,更是一本不可多得的案頭必備參考書。

論壇徽章:
0
2 [報告]
發(fā)表于 2013-04-15 14:23 |只看該作者
《Android編程寶典》
第一篇Android基礎(chǔ)編程
第1章 初識Android
1.1  為什么要開發(fā)Android應(yīng)用程序
1.1.1  Google Play
1.1.2  開放平臺
1.1.3  兼容性
1.1.4  聚合能力
1.2  搭建Android開發(fā)環(huán)境
1.2.1  Android源碼
1.2.2  Android整體架構(gòu)
1.2.3  搭建Android開發(fā)環(huán)境
1.2.4  下載和安裝JDK
1.2.5  下載和安裝Eclipse和ADT
1.2.6  安裝Android SDK
1.2.7  管理模擬器
1.3  編寫Hello World
1.3.1   新建Hello World工程
1.3.2   運(yùn)行Hello World工程
1.3.3   Hello World工程目錄結(jié)構(gòu)分析
1.3.4   AndroidManifest.xml文件分析
1.4  Android編程基礎(chǔ)
1.4.1  Java語言
1.4.2  活動(Activity)
1.4.3  意圖(Intent)
1.4.4  廣播接收者(Broadcast Receiver)
1.4.5  服務(wù)(Service)
1.4.6  視圖(View)和用戶界面控件(Widget)
1.4.7  異步調(diào)用
1.4.8  android應(yīng)用程序聲明周期
第2章 活動
2.1  創(chuàng)建活動
2.1.1  新建活動
2.1.2  新建用戶界面
2.2  理解活動生命周期   
2.2.1  活動生命周期
2.2.2  LogCat的使用
2.3  活動的啟動模式(android:launchMode)
2.4  活動運(yùn)用樣式和主題
2.5  隱藏活動標(biāo)題欄
2.6  彈出對話框
2.7  彈出進(jìn)度條對話框
第3章 意圖和廣播接收者
3.1  意圖激活A(yù)ctivity
3.1.1  Activity之間的跳轉(zhuǎn)
3.1.2  Intent傳遞數(shù)據(jù)
3.1.3  跳轉(zhuǎn)至其他活動并獲取結(jié)果
3.2  隱式意圖
3.2.1  意圖過濾器
3.2.2  Android隱式意圖的解析
3.2.3  隱式意圖使用實例
3.2.4  意圖打開內(nèi)置應(yīng)用程序組件
3.3  廣播接受者
3.3.1  XML方式注冊廣播接受者
3.3.2  代碼方式注冊廣播接受者
第4章 用戶界面
4.1  用戶界面組件
4.1.1  View和ViewGroup
         4.1.2  LinearLayout(線性布局)
         4.1.3  AbsoluteLayout(絕對布局)
                 4.1.4  TableLayout(表格布局)
         4.1.5  RelativeLayout(相對布局)
         4.1.6  FrameLayout(幀布局)
         4.1.7  ScrollView(滾動視圖)
         4.1.8  Java代碼方式布局
4.2  屏幕方向改變
4.2.1  理解屏幕方向改變
4.2.2  適應(yīng)方向改變
第5章 常用控件
5.1  基本界面組件
5.1.1  文本框(TextView)和編輯框(EditText)
5.1.2  按鈕(Button)和圖片按鈕(ImageButton)
5.1.3  單選按鈕(RadioButton)和單選按鈕組(RadioGroup)
5.1.4  復(fù)選按鈕(CheckBox)
5.1.5  狀態(tài)開關(guān)按鈕(ToggleButton)
5.1.6  圖像視圖(ImageView)
5.2  高級界面控件
    5.2.1  自動完成文本框(AutoCompleteTextView)
5.2.2  下拉列表(Spinner)
5.2.3  日期選擇器(DatePicker)和時間選擇器(TimerPicker)
5.2.4  進(jìn)度條(ProgressBar)和拖動條(SeekBar)
5.2.5  星級評分條(RatingBar)
5.2.6  列表視圖(ListView)
5.2.7  網(wǎng)絡(luò)視圖(GridView)
第6章 菜單,通知以及鬧鐘服務(wù)
6.1  菜單
6.1.1 選項菜單
6.1.2 上下文菜單
6.1.3 子菜單
6.2  通知
6.2.1  普通通知
6.2.2  自定義視圖通知
6.2.3  高級通知技術(shù)
6.3  鬧鐘服務(wù)
第7章 Android事件處理
7.1  Android事件處理概括介紹
7.1.1  基于監(jiān)聽器的事件處理機(jī)制
7.1.2  基于回調(diào)的事件處理機(jī)制
7.2  監(jiān)聽和處理用戶單擊事件
7.2.1  匿名內(nèi)部類作為事件監(jiān)聽器類
7.2.2  內(nèi)部類作為事件監(jiān)聽器類
7.2.3  Activity本身作為事件監(jiān)聽器類
7.3  監(jiān)聽和處理鍵盤事件
7.3.1  監(jiān)聽處理onKeyDown事件
7.3.2  監(jiān)聽處理onKeyUp事件
    7.4  自定義監(jiān)聽器
7.5  基于回調(diào)的事件處理
7.5.1  創(chuàng)建自定義視圖
7.5.2  回調(diào)處理onKeyDown事件
7.5.3  回調(diào)處理onKeyUp事件
7.5.4  回調(diào)處理觸摸事件
7.5.5  Android的手勢識別
第8章 數(shù)據(jù)存儲
8.1  SharedPreferences(系統(tǒng)偏好設(shè)置)
8.1.1  SharedPreferences數(shù)據(jù)存儲
8.2  PreferenceActivity
8.2.1  CheckBoxPreference
8.2.2  EditTextPreference
8.2.3  ListPreference
8.2.4  RingtonePreference
8.2.5  PreferenceCategory
8.3  文件存儲
8.3.1  內(nèi)部存儲
8.3.2  外部存儲
8.4  SQLite數(shù)據(jù)庫存儲
第9章 內(nèi)容提供者
9.1  Android內(nèi)置內(nèi)容提供者
9.1.1  內(nèi)置內(nèi)容提供者
9.1.2  使用內(nèi)置內(nèi)容提供者
9.2  自定義內(nèi)容提供者
第10章 Android異步處理機(jī)制
10.1  子線程
         10.1.1  實現(xiàn)Runnable接口
         10.1.2  繼承Thread類
         10.1.3  Android創(chuàng)建子線程
10.2  Handler的使用
         10.2.1  Android消息機(jī)制
10.2.2  Handler更新UI界面
         10.2.3  Handler發(fā)送Runnable對象
10.2.4  runOnUiThread函數(shù)的使用
10.2  Handler的使用   
第二篇Android高級編程
第11章 服務(wù)
11.1  Service介紹
11.1.1  Service啟動方式
11.1.2  Service基礎(chǔ)  
11.2  本地服務(wù)
11.2.1  不需要與組件交互本地服務(wù)
11.2.2  本地服務(wù)結(jié)合廣播接收者
11.2.3  與組件交互本地服務(wù)
11.2.4  Service與Thread的區(qū)別
11.3  遠(yuǎn)程服務(wù)
11.3.1  AIDL實例
11.3.2  遠(yuǎn)程服務(wù)實例
第12章 LBS
12.1  定位
12.1.1  手機(jī)定位的方式
12.1.2  GPS定位
12.1.3  基站定位
12.1.4  WIFI定位
12.2  Google Maps
12.2.1  下載Google Maps
12.2.2  獲取Google Mpas API Key
12.2.3  MapView的使用
12.2.4  地圖標(biāo)記的使用
第13章 網(wǎng)絡(luò)編程
13.1  網(wǎng)絡(luò)獲取數(shù)據(jù)
13.1.1  網(wǎng)絡(luò)下載圖片
13.1.2  網(wǎng)絡(luò)下載文本數(shù)據(jù)      
13.2  XML解析
          13.2.1  DOM解析技術(shù)
                13.2.2  SAX解析技術(shù)
          13.2.3  Pull解析技術(shù)      
13.3  JSON數(shù)據(jù)解析
13.4  HttpClient
13.4.1  HttpClient發(fā)送HttpGet請求
13.4.2  HttpClient發(fā)送HttpPost請求
13.5  Android調(diào)用WebService查詢號碼歸屬地
13.6  Android Tcp Socket
第14章 多媒體
14.1  音頻播放
     14.1.1   MediaPlayer的介紹
     14.1.2         MediaPlayer播放音頻            
14.2  視頻播放
14.2.1   自帶播放器播放視頻
14.2.2   VideoView播放視頻
14.2.3   MediaPlayer結(jié)合SurfaceView播放視頻
14.3  音頻錄制
14.4  視頻錄制
14.5  TTS的使用
第15章 傳感器
15.1  傳感器入門
15.1.1   獲取傳感器類別
15.1.2   監(jiān)聽傳感器事件
15.2  仿微信搖一搖功能        
15.3  方向傳感器
第16章 Android圖形和圖像
16.1  圖片瀏覽器
16.1.1  Gallery
16.1.2  Gallery和ImageSwitcher
16.2  訪問圖片
16.2.1  Drawable
16.2.2  Bitmap和BitmapFactory
16.3  內(nèi)存優(yōu)化
16.3.1  Drawable與Bitmap占用內(nèi)存比較
16.3.2  decodeResource方法與decodeStream效率
16.3.3  防止內(nèi)存溢出
16.4  2D繪圖
16.4.1  View類
16.4.2  SurfaceView類
16.4.3  Canvas(畫布)和Paint(畫筆)
16.5  Android動畫
16.5.1  補(bǔ)間動畫
16.5.2  漸變動畫(AlphaAnimation)
16.5.3  尺寸變化動畫(ScaleAnimation)
16.5.4  位置變化動畫(TranslateAnimation)
16.5.5  旋轉(zhuǎn)變化動畫(RotateAnimation)
16.5.6  逐幀動畫(Frame Animation)
第17章 Android硬件接口
17.1  藍(lán)牙基本介紹
17.1.1  藍(lán)牙工作流程
17.1.2  藍(lán)牙編程核心類
17.1.3  藍(lán)牙權(quán)限
17.1.4  找尋周圍藍(lán)牙設(shè)備
17.2  Telephony介紹
17.2.1  使用Telephony Manager
17.2.2  廣播接收者監(jiān)聽來電信息
17.2.3  廣播接收者監(jiān)聽去電信息
17.3  系統(tǒng)和控制設(shè)備
17.3.1  設(shè)置聲音模式
17.3.2  獲取安裝程序列表
17.3.3  控制設(shè)備振動
17.3.4  管理網(wǎng)絡(luò)和WIFI鏈接
第18章 Android桌面組件
18.1  實時文件夾
         18.1.1  使用實時文件夾
         18.1.2  實時文件夾實例
    18.2  快捷方式       
    18.3  桌面插件(Widget)
     18.3.1  使用Widget
     18.3.2  AppWidget框架類
     18.3.3  桌面插件(Widget)實例   
第三篇Android實戰(zhàn)應(yīng)用

第19章 電子訂餐系統(tǒng)
19.1  系統(tǒng)功能簡介和架構(gòu)設(shè)計
         19.1.1  系統(tǒng)功能簡介
         19.1.2  系統(tǒng)架構(gòu)設(shè)計
    19.2  發(fā)送Http請求的工具類       
19.3  用戶注冊
             19.3.1  用戶注冊Servlet
         19.3.2  用戶模型
                 19.3.3  用戶DAO
         19.3.4  用戶注冊
19.4  用戶注冊
             19.4.1  用戶登錄Servlet
         19.4.2  用戶登錄       
19.5  菜品展示
             19.5.1  菜品展示Servlet
         19.5.2  菜品模型
                 19.5.3  菜品DAO
         19.5.4  菜品展示
19.6  菜品詳情
19.7  購物車
         19.7.1  購物車總計
                 19.7.2  修改購物車
         19.7.3  下單

論壇徽章:
0
3 [報告]
發(fā)表于 2013-04-15 14:24 |只看該作者
本帖最后由 didimm 于 2013-04-15 14:25 編輯

第7章 Android事件處理
   對于一個Android應(yīng)用程序來說,事件處理是必不可少的,用戶與應(yīng)用程序之間的交互便是通過事件處理來完成的。在前面的章節(jié)當(dāng)中,讀者朋友們已經(jīng)學(xué)習(xí)了很多的用戶界面組件,并且已經(jīng)學(xué)會了對他們的熟練使用。在本章當(dāng)中,筆者將要和讀者朋友們一起去探索如何使用Android的事件處理,從而當(dāng)相關(guān)用戶界面事件發(fā)生之后,根據(jù)具體需要,完成相應(yīng)的業(yè)務(wù)邏輯操作。本章主要包含以下內(nèi)容:
        Android事件處理概括介紹
        監(jiān)聽和處理用戶單擊事件
        監(jiān)聽和處理鍵盤事件

論壇徽章:
0
4 [報告]
發(fā)表于 2013-04-15 14:25 |只看該作者
7.1  Android 事件處理概括介紹
無論是在Java圖形用戶界面程序的開發(fā)過程當(dāng)中,還是在Android應(yīng)用程序的開發(fā)過程當(dāng)中,用戶都是通過事件驅(qū)動的方式與設(shè)備進(jìn)行交互的,這些事件都是通過各種各樣的輸入設(shè)備而產(chǎn)生的,比如:觸摸屏、鍵盤等。Android平臺提供了兩種事件處理的機(jī)制,分別是基于監(jiān)聽器的事件處理機(jī)制以及基于回調(diào)的事件處理機(jī)制。
7.1.1 基于監(jiān)聽器的事件處理機(jī)制
對于基于監(jiān)聽器的事件處理而言,主要就是為Android用戶界面組件綁定特定的事件監(jiān)聽器。
相比于基于回調(diào)的事件處理,這是更具“面向?qū)ο蟆毙再|(zhì)的事件處理方式。在監(jiān)聽器模型中,主要涉及三類對象:
        事件源(Event Source):產(chǎn)生事件的來源,通常是指各種用戶界面組件,比如按鈕,文本框等。
        事件(Event):事件封裝了用戶界面組件上發(fā)生的特定事件的具體信息,如果監(jiān)聽器需要獲取用戶界面組件上所發(fā)生事件的相關(guān)信息,一般通過事件Event對象來傳遞。
        事件監(jiān)聽器(Event Listener):負(fù)責(zé)監(jiān)聽事件源發(fā)生的事件,用來負(fù)責(zé)對不同的事件做出相應(yīng)的處理。
基于監(jiān)聽器的事件處理機(jī)制是一種委托式的事件處理方式,事件源將整個事件委托給事件監(jiān)聽器,由事件監(jiān)聽器對事件進(jìn)行響應(yīng)處理。這種處理方式將事件源和事件監(jiān)聽器分離開來,有利于增強(qiáng)程序的可維護(hù)性,減少程序的耦合度。
舉例:
View類中的OnLongClickListener監(jiān)聽器定義如下:(不需要傳遞事件)
public interface OnLongClickListener
{  
    boolean onLongClick(View v);  
}
View類中的OnTouchListener監(jiān)聽器定義如下:(需要傳遞事件MotionEvent)
public interface OnTouchListener
{  
    boolean onTouch(View v, MotionEvent event);  
}

論壇徽章:
0
5 [報告]
發(fā)表于 2013-04-15 14:26 |只看該作者
7.1.2 基于回調(diào)的事件處理機(jī)制
對于基于回調(diào)的事件處理而言,主要做法是重寫Android用戶界面組件特定的回調(diào)函數(shù),Android大部分用戶界面組件都提供了事件響應(yīng)的回調(diào)函數(shù),開發(fā)者重寫這些方法就可以了。
相比基于監(jiān)聽器的事件處理模型,基于回調(diào)的事件處理模型要簡單些,該模型中,事件源和事件監(jiān)聽器是合一的,也就是說沒有獨(dú)立的事件監(jiān)聽器存在。當(dāng)用戶在GUI組件上觸發(fā)某事件時,由該組件自身特定的函數(shù)負(fù)責(zé)處理該事件。通常通過重寫Override用戶界面組件的事件處理函數(shù)實現(xiàn)事件的處理。
舉例:
View類實現(xiàn)了KeyEvent.Callback接口中的一系列回調(diào)函數(shù),因此,基于回調(diào)的事件處理機(jī)制通過自定義View來實現(xiàn),自定義View時重寫這些事件處理方法即可。
public interface Callback {  
    // 幾乎所有基于回調(diào)的事件處理函數(shù)都會返回一個boolean類型值,該返回值用于  
    // 標(biāo)識該處理函數(shù)是否能完全處理該事件  
// 返回true,表明該函數(shù)已完全處理該事件,該事件不會繼續(xù)傳播出去  
// 返回false,表明該函數(shù)未完全處理該事件,該事件會繼續(xù)傳播出去
    boolean onKeyDown(int keyCode, KeyEvent event);  
    boolean onKeyLongPress(int keyCode, KeyEvent event);  
    boolean onKeyUp(int keyCode, KeyEvent event);  
    boolean onKeyMultiple(int keyCode, int count, KeyEvent event);  
}
綜上所述:基于監(jiān)聽器的事件模型符合單一職責(zé)原則,事件源和事件監(jiān)聽器分開實現(xiàn)。Android的事件處理機(jī)制保證基于監(jiān)聽器的事件處理會優(yōu)先于基于回調(diào)的事件處理被觸發(fā)。某些特定情況下,基于回調(diào)的事件處理機(jī)制會更好的提高程序的內(nèi)聚性。

論壇徽章:
0
6
發(fā)表于 2013-04-15 14:37
本帖最后由 didimm 于 2013-04-15 14:38 編輯

[7.2  監(jiān)聽和處理用戶單擊事件
用戶界面組件的單擊事件是Android應(yīng)用程序當(dāng)中最常用到的事件類型。下面通過實例的方式為讀者朋友們來介紹如何通過綁定監(jiān)聽器的方式來監(jiān)聽和處理用戶界面組件的單擊事件?梢圆捎媚涿麅(nèi)部類,內(nèi)部類或者是Activity本身來作為事件監(jiān)聽器類,下面為讀者朋友一一介紹。
7.2.1 匿名內(nèi)部類作為事件監(jiān)聽器類
下面的實例采用匿名內(nèi)部類來作為按鈕控件的單擊事件監(jiān)聽器類。
(1)新建工程chapter7_1,編輯res/layout/activity_main.xml文件,源代碼參考光盤。
(2)編輯MainActivity.java文件,源代碼如下:
public class MainActivity extends Activity
{
        TextView mTextView;//聲明文本控件
        Button mMyButton;//聲明按鈕控件
    @Override
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView)findViewById(R.id.my_textview);//找到文本控件
        mMyButton = (Button)findViewById(R.id.my_button);//找到按鈕控件
        //采用匿名內(nèi)部類的方式作為按鈕單擊事件的監(jiān)聽器
        mMyButton.setOnClickListener(new OnClickListener()
{
                        @Override
                        public void onClick(View v)
{//當(dāng)用戶單擊按鈕時,觸發(fā)onClick方法
                                mTextView.setText("Button has been clicked");  //設(shè)置文本內(nèi)容
                        }
                });
    }
    @Override
public boolean onCreateOptionsMenu(Menu menu)
{
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
在Android應(yīng)用程序開發(fā)的過程當(dāng)中,大多數(shù)的事件監(jiān)聽器都是以匿名內(nèi)部類的形式存在的,這是由于事件監(jiān)聽器被復(fù)用的概率非常小,幾乎可以忽略不計。一般情況下,聲明的事件監(jiān)聽器只與某一個單獨(dú)的用戶界面組件事件相綁定,所以筆者在這里也建議大家使用匿名內(nèi)部類來作為事件監(jiān)聽器。
(3)右擊工程chapter7_1,在彈出的快捷菜單中選擇Run As|Android Application,運(yùn)行效果如圖7-1所示,單擊“Hello World”按鈕,運(yùn)行效果如圖7-2所所示:

論壇徽章:
0
7 [報告]
發(fā)表于 2013-04-15 14:39 |只看該作者
7.2.2 內(nèi)部類作為事件監(jiān)聽器類
上面章節(jié)介紹了如何使用匿名內(nèi)部類來作為按鈕控件的單擊事件監(jiān)聽器類,下面通過代碼方式來介紹如何使用內(nèi)部類來作為按鈕控件的單擊事件監(jiān)聽器類。
(1)編輯chapter7_1工程的MainActivity.java文件,源代碼如下:
public class MainActivity extends Activity
{
        TextView mTextView;//聲明文本控件
        Button mMyButton;//聲明按鈕控件
    @Override
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView)findViewById(R.id.my_textview);//找到文本控件
        mMyButton = (Button)findViewById(R.id.my_button);//找到按鈕控件
        mMyButton.setOnClickListener(new MyButtonClickListener());//為按鈕綁定單擊事件監(jiān)聽器
    }
    //采用內(nèi)部類方式作為按鈕單擊事件的監(jiān)聽器
private final class MyButtonClickListener implements View.OnClickListener
{
            @Override
            public void onClick(View v)
{//當(dāng)用戶單擊按鈕時,觸發(fā)onClick方法
                    mTextView.setText("Button has been clicked");  //設(shè)置文本內(nèi)容
            }
    }   
    @Override
public boolean onCreateOptionsMenu(Menu menu)
{
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
采用內(nèi)部類作為事件監(jiān)聽器有一個好處就是它的可復(fù)用性。對于上述代碼當(dāng)中建立的MyButtonClickListener內(nèi)部類實現(xiàn)了View.OnClickListener這個接口,這個內(nèi)部類不僅可以與id為“my_button”的按鈕控件單擊事件相綁定,也可以任何一個用戶界面組件的單擊事件相綁定。
(2)運(yùn)行效果與采用匿名內(nèi)部類的方式的運(yùn)行效果一致。

論壇徽章:
0
8 [報告]
發(fā)表于 2013-04-15 14:39 |只看該作者
7.2.3 Activity本身作為事件監(jiān)聽器類
事件監(jiān)聽器不僅可以采用匿名內(nèi)部類或者是內(nèi)部類的形式,還可以使用Activity本身來作為用戶界面組件的事件監(jiān)聽器類。
(1)編輯chapter7_1工程的MainActivity.java文件,源代碼如下:
public class MainActivity extends Activity implements View.OnClickListener
{
        TextView mTextView;//聲明文本控件
        Button mMyButton;//聲明按鈕控件
    @Override
public void onCreate(Bundle savedInstanceState)
{
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView)findViewById(R.id.my_textview);//找到文本控件
        mMyButton = (Button)findViewById(R.id.my_button);//找到按鈕控件
        mMyButton.setOnClickListener(this);//采用Activity本身作為按鈕單擊事件監(jiān)聽器
    }
    @Override
public void onClick(View v)
{ //當(dāng)用戶單擊按鈕時,觸發(fā)onClick方法
             mTextView.setText("Button has been clicked");  //設(shè)置文本內(nèi)容
    }
    @Override
public boolean onCreateOptionsMenu(Menu menu)
{
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
(2)運(yùn)行效果與采用匿名內(nèi)部類以及內(nèi)部類的方式一致。

論壇徽章:
0
9 [報告]
發(fā)表于 2013-04-15 14:41 |只看該作者
7.3  監(jiān)聽和處理鍵盤事件
接下來讀者朋友將要熟悉Android應(yīng)用程序當(dāng)中鍵盤事件的監(jiān)聽和處理操作,主要是鍵盤按下(onKeyDown)事件和鍵盤釋放(onKeyUp)事件,這些事件在游戲應(yīng)用程序編寫過程當(dāng)中就顯得比較重要。
7.3.1 監(jiān)聽處理onKeyDown事件
下面通過實例的方式來為讀者朋友們介紹如何處理鍵盤按下(onKeyDown)事件。
(1)新建工程chapter7_2,編輯MainActivity.java文件,源代碼如下:
public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {//覆蓋Activity基類的鍵盤按下事件
            if(KeyEvent.KEYCODE_BACK == keyCode)
{//如果用戶按下返回鍵
                    new AlertDialog.Builder(this).setTitle("確認(rèn)退出嗎?").setPositiveButton("確定",  new DialogInterface.OnClickListener()
{
                                @Override
                                public void onClick(DialogInterface dialog, int which)
{
                                        System.exit(0);//退出應(yīng)用程序
                                }
                        }).setNegativeButton("取消", new DialogInterface.OnClickListener()
{
                                @Override
                                public void onClick(DialogInterface dialog, int which)
{
                                        dialog.dismiss();//對話框消失
                                }
                        }).show();
                    return true;//事件不再繼續(xù)往下傳遞
            }
else if(KeyEvent.KEYCODE_SEARCH == keyCode)
{//如果用戶按下搜索鍵
                    Toast.makeText(this, "搜索鍵被按下", Toast.LENGTH_LONG).show();
                    return true;
            }
else if(KeyEvent.KEYCODE_MENU == keyCode)
{//如果用戶按下菜單鍵
                    Toast.makeText(this, "菜單鍵被按下", Toast.LENGTH_LONG).show();
                    return true;
            }
            return super.onKeyDown(keyCode, event);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
在上述實例當(dāng)中,筆者重寫了Activity基類的onKeyDown(int keyCode, KeyEvent event)方法,當(dāng)然如果為相應(yīng)用戶界面組件添加onKeyListener的監(jiān)聽器,也可以對鍵盤按下的事件進(jìn)行監(jiān)聽和處理,但是如果用戶界面組件沒有獲得用戶的焦點,就不能對按下事件進(jìn)行攔截和處理,所以還是重寫Activity基類的onKeyDown()方法會比較好一點。

論壇徽章:
0
10 [報告]
發(fā)表于 2013-04-15 14:41 |只看該作者
onKeyDown(int keyCode, KeyEvent event)方法接收兩個參數(shù)。
參數(shù)keyCode,該參數(shù)表示的是被按下的鍵值的鍵盤碼,手機(jī)鍵盤中每個按鈕都會有其單獨(dú)的鍵盤碼來作為唯一的標(biāo)示,應(yīng)用程序都是通過鍵盤碼才知道用戶按下的是哪個鍵。參數(shù)event,該參數(shù)表示的是按鍵事件的對象,其中包含了觸發(fā)事件的詳細(xì)信息,例如事件的狀態(tài)、事件的類型、事件發(fā)生的時間等。當(dāng)用戶按下按鍵時,系統(tǒng)會自動將事件封裝成KeyEvent對象供應(yīng)用程序使用。
該方法的返回值為一個boolean類型的變量,當(dāng)返回true時,表示已經(jīng)完整地處理了這個事件,事件不再往下傳遞,而當(dāng)返回false時,表示并沒有完全處理完該事件,事件會被傳遞給其他的事件函數(shù)繼續(xù)處理。
筆者在onKeyDown()方法當(dāng)中,對用戶的按鍵進(jìn)行了判斷,如果用戶按下的是搜索鍵或者是菜單鍵,界面上會給出一個相應(yīng)的提示,如果用戶按下的是返回鍵,用戶界面上會彈出一個對話框,對話框當(dāng)中有兩個按鈕,當(dāng)用戶單擊“確定”按鈕的時候,應(yīng)用程序會退出,當(dāng)用戶單擊“取消”按鈕的時候,彈出的對話框會消失。
(2)右擊工程chapter7_2,在彈出的快捷菜單中選擇Run As|Android Application命令,當(dāng)用戶按下返回鍵的時候,運(yùn)行效果如圖7-3所示,當(dāng)用戶按下搜索鍵的時候,運(yùn)行效果如圖7-4所示:
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP