成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談OPhone優(yōu)閱讀書(shū)軟件的開(kāi)發(fā)心得

移動(dòng)開(kāi)發(fā)
開(kāi)發(fā)這個(gè)程序應(yīng)用了瀏覽器控件,采用了RelativeLayout,下面就簡(jiǎn)單講講開(kāi)發(fā)中我的心得體會(huì).

 

閱讀頁(yè)面
首先從布局開(kāi)始吧,閱讀界面采用了RelativeLayout布局方式,目的是有一個(gè)菜單鍵一直在屏幕下方,方便用戶觸摸操作。

 


下面就逐步講解一下屏幕下部分頁(yè)面布局的代碼:

  1. <?xml version="1.0" encoding="utf-8"?>     
  2. <RelativeLayout xmlns:android=  
  3. "http://schemas.android.com/apk/res/android"    
  4. androidrientation="vertical"    
  5. android:layout_width="fill_parent"    
  6. android:layout_height="fill_parent"    
  7. android:background="#FFdbdbdb"    
  8. >     

設(shè)置全屏和背景色

  1. <WebView android:id="@+id/webkit"      
  2. android:layout_width="fill_parent"      
  3. android:layout_height="fill_parent"      
  4. android:background="#FFdbdbdb"    
  5. />   

全屏的WebView控件,即瀏覽器控件,同樣設(shè)置了背景色。

  1. <Button android:layout_width="wrap_content"      
  2. android:id="@+id/Button01"      
  3.       
  4. android:layout_centerHorizontal="true"      
  5. android:layout_centerInParent="true"    
  6.  android:layout_alignParentRight="false"      
  7.  android:layout_alignWithParentIfMissing="true"      
  8.  android:layout_height="wrap_content"      
  9.  android:layout_alignBottom="@layout/main" android:text="菜單">     
  10.  </Button>   

菜單鍵的設(shè)置,layout_centerHorizontal layout_alignParentRight layout_alignWithParentIfMissing 的設(shè)置,就保證菜單鍵一直出現(xiàn)在中間,android:layout_alignBottom="@layout/main"設(shè)定了菜單鍵在頁(yè)面***部。

  1. <Button android:layout_width="wrap_content"      
  2. android:id="@+id/ButtonUp"      
  3.       
  4. android:layout_centerHorizontal="true"      
  5. android:layout_centerInParent="false"    
  6.  android:layout_alignParentLeft="true"      
  7.  android:layout_alignWithParentIfMissing="true"      
  8.  android:layout_height="wrap_content"      
  9.  android:layout_alignBottom="@layout/main" android:text="上一頁(yè)">     
  10.  </Button>     
  11.  <Button android:layout_width="wrap_content"      
  12. android:id="@+id/ButtonDown"      
  13.       
  14. android:layout_centerHorizontal="true"      
  15. android:layout_centerInParent="false"    
  16.  android:layout_alignParentRight="true"      
  17.  android:layout_alignWithParentIfMissing="true"      
  18.  android:layout_height="wrap_content"      
  19.  android:layout_alignBottom="@layout/main" android:text="下一頁(yè)">     
  20.  </Button>     
  21. </RelativeLayout>   

類(lèi)似的一左一右的設(shè)置了上下頁(yè)按鍵。

到這里閱讀頁(yè)面就已經(jīng)準(zhǔn)備好了。

RelativeLayout布局的優(yōu)點(diǎn)就是能夠把你需要的button布局在屏幕的相對(duì)位置上,適合于不同屏幕大小的手機(jī)采用統(tǒng)一代碼操作,減輕了移植帶來(lái)的負(fù)擔(dān)。這里只布局在了屏幕的正下方,同樣也可布局在屏幕中央,最上方等位置。

webView控件基本使用
瀏覽器控件即webView,下面談?wù)勅绾卧O(shè)置和監(jiān)控webView控件:webView是J2ME所沒(méi)有的,是類(lèi)似于Symbian和.net CF 里面功能類(lèi)似的瀏覽器控件,通過(guò)這個(gè)控件可以直接訪問(wèn)網(wǎng)頁(yè),或者把輸入的HTML字符串顯示出來(lái),功能比較強(qiáng)大,同Symbian或.net CF 瀏覽器控件比起來(lái)有以下幾個(gè)優(yōu)點(diǎn):
 
1、功能強(qiáng)大,支持CSS,Java script等HTML語(yǔ)言,這樣頁(yè)面就能更漂亮。
2、能夠?qū)g覽器控件進(jìn)行非常詳細(xì)的設(shè)置,比如字體大小,背景色,滾動(dòng)條樣式,等等。
3、能夠捕捉到所有瀏覽器操作,比如點(diǎn)擊URL,打開(kāi)或關(guān)閉URL
4、能夠很好的融入布局。
5、甚至webView還能和JS進(jìn)行交互。#t#

在使用webView布局的頁(yè)面后,我們首先取得webView實(shí)例,browser就是webView的對(duì)象:

browser=(WebView)findViewById(R.id.webkit);

取得實(shí)例后,我們給browser定義下WebSettings,WebSettings是WebView的具體設(shè)置類(lèi),可以對(duì)WebView進(jìn)行非常詳細(xì)的設(shè)置。

WebSettings bs = browser.getSettings();
取得了webView設(shè)置對(duì)象。下面開(kāi)始設(shè)置瀏覽器控件#p#
舉例幾個(gè)最常用的設(shè)置

  1. bs.setSupportMultipleWindows(false);    

瀏覽器不支持多窗口顯示,意思就是說(shuō)所有頁(yè)面在單一窗口打開(kāi),這樣避免了頁(yè)面布局控制顯示問(wèn)題,也便于操作控制頁(yè)面。

  1. bs.setSupportZoom(false);   

頁(yè)面是否可以進(jìn)行縮放。

  1. bs.setBlockNetworkImage(false)  

是否阻止圖像的顯示

  1. bs.setCacheMode()  

緩存的模式,分為幾種LOAD_CACHE_ELSE_NETWORK(當(dāng)本地沒(méi)有緩存時(shí),從網(wǎng)上下載)
        
              LOAD_CACHE_ONLY 只讀取本地緩存
              LOAD_DEFAULT默認(rèn)的緩存模式
              LOAD_NORMAL一般的緩存模式
              LOAD_NO_CACHE不讀取緩存,所有內(nèi)容均從網(wǎng)絡(luò)下載
 
      bs.setJavaScriptEnabled(flag)

是否支持JS

其他比如設(shè)置字體等更不必詳說(shuō)。通過(guò)設(shè)置,我們可以獲得一個(gè)我們需要的瀏覽器窗口。

另外一方面,我們還設(shè)置了一個(gè)類(lèi)叫webNotify 這個(gè)類(lèi)繼承自WebViewClient,用來(lái)監(jiān)控瀏覽器的一系列事件。

  1. webNotify wn = new webNotify();     
  2.            
  3.        browser.setWebViewClient(wn) ;    

下面列舉了比較常用的4個(gè)事件
 1,接收到Http請(qǐng)求的事件

  1. onReceivedHttpAuthRequest  
  2. (WebView view, HttpAuthHandler handler, String host, String realm) 

2,打開(kāi)鏈接前的事件

  1. public boolean shouldOverrideUrlLoading  
  2. (WebView view, String url) {     
  3.    view.loadUrl(url);      
  4.        return true;     
  5.  }    

這個(gè)函數(shù)我們可以做很多操作,比如我們讀取到某些特殊的URL,于是就可以不打開(kāi)地址,取消這個(gè)操作,進(jìn)行預(yù)先定義的其他操作,這對(duì)一個(gè)程序是非常必要的。

3,載入頁(yè)面完成的事件

  1. public void onPageFinished  
  2. (WebView view, String url){          
  3. }    

同樣道理,我們知道一個(gè)頁(yè)面載入完成,于是我們可以關(guān)閉loading條,切換程序動(dòng)作。

4,載入頁(yè)面開(kāi)始的事件

  1. public void onPageStarted  
  2. (WebView view, String url, Bitmap favicon) {          
  3. }  


這個(gè)事件就是開(kāi)始載入頁(yè)面調(diào)用的,通常我們可以在這設(shè)定一個(gè)loading的頁(yè)面,告訴用戶程序在等待網(wǎng)絡(luò)響應(yīng)。

通過(guò)這幾個(gè)事件,我們可以很輕松的控制程序操作,一邊用著瀏覽器顯示內(nèi)容,一邊監(jiān)控著用戶操作實(shí)現(xiàn)我們需要的各種顯示方式,同時(shí)可以防止用戶產(chǎn)生誤操作。#p#

***我們的瀏覽器設(shè)置好了,可以監(jiān)控操作了,于是打開(kāi)一個(gè)網(wǎng)址,

  1. browser.loadUrl("http://www.baidu.com/");   

當(dāng)然也可以是自己設(shè)定的一段html字符串,當(dāng)然你的URL腰符合規(guī)范。

  1. browser.loadDataWithBaseURL()     

如何和JS進(jìn)行交互
好了,到這里基本的webView的基本使用介紹完了。下面介紹下如何和JS進(jìn)行交互,這個(gè)功能非常強(qiáng)大了,能夠做出很多意想不到的事情。

首先我們?cè)陧?yè)面里有這么一段JS代碼

  1. <html>      
  2.         <script language="javascript">      
  3.                 function wave() {      
  4.                     document.getElementById("droid").src="android_waving.png";      
  5.                 }      
  6.         </script>      
  7.         <body>      
  8.             <a onClick="window.demo.clickOnAndroid()">      
  9.                                 <img id="droid" src="android_normal.png"/><br>      
  10.                                 Click me!      
  11.             </a>      
  12.         </body>      
  13. </html>      
  14.       
  15. function wave()  
  16. 就是我們要調(diào)用的函數(shù)。然后讓browser和頁(yè)面進(jìn)行交互     
  17. bs.setJavaScriptEnabled(true);      
  18. 首先讓瀏覽器支持JS。     
  19.         browser.addJavascriptInterface(new Object() {      
  20.             public void clickOnAndroid() {      
  21.                 mHandler.post(new Runnable() {      
  22.                     public void run() {      
  23.                         mWebView.loadUrl("javascript:wave()");      
  24.                     }      
  25.                 });      
  26.             }      
  27.         }, "index");     


這里的重點(diǎn)是addJavascriptInterface(Object obj,String interfaceName)方法,該方法將一個(gè)java對(duì)象綁定到一個(gè)javascript對(duì)象中,javascript對(duì)象名就是interfaceName,作用域是Global。這樣初始化webview后,在webview加
載的頁(yè)面中就可以直接通過(guò)javascript:window.demo訪問(wèn)到綁定的java對(duì)象了。

這樣我們就能在自己的瀏覽器里實(shí)現(xiàn)html頁(yè)面里面的js代碼了,具體能實(shí)現(xiàn)什么功能這里就不做詳細(xì)舉例了,實(shí)用中你會(huì)發(fā)現(xiàn),這個(gè)功能太強(qiáng)大了。

View的觸摸操作

最基本的在View里面 onTouchEvent,它主要實(shí)現(xiàn)的功能是Flip,主要原理就是按下的時(shí)候記錄坐標(biāo)(用到MotionEvent.ACTION_DOWN),然后滑動(dòng)(MotionEvent.ACTION_MOVE),然后在抬起(MotionEvent.ACTION_UP),在抬起的時(shí)候在記錄坐標(biāo),把按下的坐標(biāo)和抬起的坐標(biāo)做比較,這樣就能判斷出是左還是右了,然后作出相應(yīng)的處理。一般情況下,我們執(zhí)行程序操作時(shí)就在ACTION_UP時(shí)進(jìn)行。

最基本的就是onTouchEvent,同時(shí)Android平臺(tái)還給我們提供了更多彩的操作方式,我們需要android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener 這兩個(gè)類(lèi)

新建一個(gè)類(lèi)繼承SimpleOnGestureListener,HahaGestureDetectorListener
可以實(shí)現(xiàn)以下event事件。
boolean onDoubleTap(MotionEvent e)
解釋?zhuān)弘p擊的第二下Touch down時(shí)觸發(fā)
boolean onDoubleTapEvent(MotionEvent e)
解釋?zhuān)弘p擊的第二下Touch down和up都會(huì)觸發(fā),可用e.getAction()區(qū)分。
boolean onDown(MotionEvent e)
解釋?zhuān)篢ouch down時(shí)觸發(fā)
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解釋?zhuān)篢ouch了滑動(dòng)一點(diǎn)距離后,up時(shí)觸發(fā)。
void onLongPress(MotionEvent e)
解釋?zhuān)篢ouch了不移動(dòng)一直Touch down時(shí)觸發(fā)
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解釋?zhuān)篢ouch了滑動(dòng)時(shí)觸發(fā)。
void onShowPress(MotionEvent e)
解釋?zhuān)篢ouch了還沒(méi)有滑動(dòng)時(shí)觸發(fā)
(與onDown,onLongPress比較
onDown只要Touch down一定立刻觸發(fā)。
而Touchdown后過(guò)一會(huì)沒(méi)有滑動(dòng)先觸發(fā)onShowPress再是onLongPress。
所以Touchdown后一直不滑動(dòng),onDown->onShowPress->onLongPress這個(gè)順序觸發(fā)。
 
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解釋?zhuān)荷厦孢@兩個(gè)函數(shù)都是在touch down后又沒(méi)有滑動(dòng)(onScroll),又沒(méi)有長(zhǎng)按(onLongPress),然后Touchup時(shí)觸發(fā)。
 
點(diǎn)擊一下非常快的(不滑動(dòng))Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
 
點(diǎn)擊一下稍微慢點(diǎn)的(不滑動(dòng))Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
 
有了這么多的響應(yīng)方式,我們能更加方便的對(duì)用戶的觸摸操作進(jìn)行響應(yīng),對(duì)各種動(dòng)作都有所對(duì)應(yīng)。那么這個(gè)類(lèi)如何使用呢,其實(shí)非常簡(jiǎn)單,在view的新建一個(gè)GestureDetector的對(duì)象。
構(gòu)造函數(shù)里
gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
 
然后在View的onTouchEvent里以下這樣用,就可以在gestureDetector的事件里寫(xiě)自己的代碼了。

  1. @Override    
  2. public boolean onTouchEvent  
  3. (MotionEvent event) {     
  4.     gestureDetector.onTouchEvent(event);     
  5. }    

這里簡(jiǎn)單介紹了webView和觸摸方法的實(shí)現(xiàn),希望對(duì)大家有一定幫助,創(chuàng)造出更加適合用戶操作的程序來(lái)。

責(zé)任編輯:chenqingxiang 來(lái)源: ophonesdn
相關(guān)推薦

2024-11-07 12:14:36

2022-03-14 22:54:57

軟件開(kāi)發(fā)性能

2010-09-17 10:18:59

ODTOPhone

2023-11-11 19:07:23

JVMJava

2010-07-26 14:25:06

Widget開(kāi)發(fā)

2010-07-26 14:44:47

Widget開(kāi)發(fā)

2009-08-26 17:22:09

C#語(yǔ)言

2010-06-28 09:50:42

AMF協(xié)議

2010-07-26 12:57:12

OPhone游戲開(kāi)發(fā)

2020-11-30 11:40:35

NginxLinux性能調(diào)優(yōu)

2011-05-19 08:57:41

軟件開(kāi)發(fā)項(xiàng)目

2011-12-26 15:19:20

聚合

2010-07-23 14:51:09

OPhone開(kāi)發(fā)

2010-07-26 13:55:10

OPhone游戲開(kāi)發(fā)

2010-07-23 15:30:18

2011-07-08 08:37:05

軟件開(kāi)發(fā)

2021-12-31 09:04:39

軟件設(shè)計(jì)開(kāi)發(fā)函數(shù)

2009-05-07 08:32:59

中國(guó)移動(dòng)OphoneAndroid

2010-07-26 15:12:20

坐標(biāo)變換

2012-04-25 09:49:15

開(kāi)源開(kāi)放心得
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91精品国产日韩91久久久久久 | 国产欧美视频一区二区 | 一级毛片黄片 | 毛片网络| 涩涩视频网站在线观看 | 成人精品一区亚洲午夜久久久 | 欧美11一13sex性hd | 亚洲视频观看 | 国产欧美视频一区 | 一区二区三区免费网站 | 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 成人aaa视频 | 日韩精品中文字幕一区二区三区 | 国产精品成人一区二区三区 | 欧美在线亚洲 | 久久精品黄色 | 欧美一级黄色网 | 日韩免费一区二区 | 亚洲一区毛片 | 亚洲最新在线 | 欧美亚洲国语精品一区二区 | 91欧美激情一区二区三区成人 | 成人高清视频在线观看 | 国产精品久久久久久久久久尿 | 亚洲欧美久久 | 精品久久久久久国产 | 永久av | 天天操网 | 日日爽| 日韩精品极品视频在线观看免费 | 精品久久国产 | 色综合久久天天综合网 | 精品久久久久久亚洲综合网 | 中文字幕视频在线 | 在线视频一区二区三区 | 中文字幕一区二区三区四区五区 | 国际精品久久 | 亚洲影音| 国产成人免费视频网站视频社区 | 欧美精品久久久久 | 九九亚洲 |