日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
適用于iOS開發(fā)者的Android開發(fā)技巧

我曾經(jīng)從事過五年的iOS應用開發(fā)工作,那段時間我一直在盡量避免同Android打交道——不過現(xiàn)在情況不同了。不管大家是否相信,Android開發(fā)其實樂趣滿滿、而且與iOS開發(fā)相比也不像大家想象的那樣差異巨大。

城關網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、APP開發(fā)、響應式網(wǎng)站等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設就選創(chuàng)新互聯(lián)。

我在Android平臺上開發(fā)出這款“七分鐘鍛煉”應用,并借此學到了很多寶貴的知識。我希望這篇文章分享的一些小技巧也能幫助大家解決實際問題。請注意,我接下來進行比較的內容并不一定完全匹配,而且本文的重點也不在于完整地敘述Android開發(fā);當然,我一定會提到自己在開發(fā)這款簡單應用的過程中所積累到的全部經(jīng)驗。

IDE

我選擇使用Android Studio,而且我愿意打賭:只要測試完成,它將成為未來的業(yè)界標準。雖然很多報道稱它的運行狀態(tài)并不穩(wěn)定,但在我的實際使用中、它僅僅崩潰過一次。也許我只是習慣了Xcode。

Java

無論大家對Java如何評價,說到底它也只是不過是一種編程語言而已。它能夠解決問題,而且對于經(jīng)驗豐富的開發(fā)者來說、大家肯定是把主要精力放在框架而非Java身上。很高興我用不著跟J2EE扯上關系。

模擬器

我一直認為iOS模擬器讓人頭痛不已,但相比之下我才發(fā)現(xiàn)當初的自己還是太年輕。在稍作嘗試之后,我決定放棄Android模擬器、直接將應用部署在實際設備上——除非大家愿意拿出大量時間盯著屏幕枯等。

Storyboard / NIB

我在自己的iOS開發(fā)博客上談了很多關于Storyboard的話題,很多與我意見相左的讀者發(fā)來的一些措辭強硬的郵件讓我徹底放棄了這一交流平臺。

Android使用的布局格式為xml。它們彼此之間完全獨立。Android Studio還提供一套出色的“所見即所得”編輯器:

但大家仍然可以深入到原始xml當中——如果愿意的話(反正我一般是不愿意這么麻煩)。

相對于自動布局,大家也可以選擇其它布局容器,例如RelativeLayout以及FrameLayout之類。在這里,我們能夠以像素數(shù)量(即設備的像素容納能力)或者matchparent、wrapcontant等來設定理想的寬度、高度、填充效果、邊框以及色調。

Wrap非常適合文本內容,它會自動將調整正確的高度并設定與之相適應的尺寸,并把其余工作交給LinearLayout等特定布局方案。

雖然我還沒有用過,但Fragment看起來同樣是一種對自定義UI元素加以重新利用的好途徑。

UIViewController

Android利用一個Activity來實現(xiàn)UIViewConroller的功能。每一個屏幕/窗口都相當于一個Activity。我們就在這里處理大部分工作,包括將數(shù)據(jù)綁定到UI當中或者處理事件等等。

Controller/View轉換

在iOS當中我們利用segue、pushViewController、presentController等在不同屏幕之間進行遷移。但在Android環(huán)境下,我們需要使用Intent。

大家可以輕松遷移至新的activity當中,甚至能夠將一部分數(shù)據(jù)傳遞過去。

 
 
 
 
  1. public void onItemClick(...) { 
  2.        Intent i = new Intent(getBaseContext(), MyActivity.class); 
  3.        i.putExtra("row", position); 
  4.        startActivity(i); 

在新的Activity(也就是以上代碼中的MyActivity)中,我們可以提取出傳遞來的數(shù)據(jù):

 
 
 
 
  1. protected void onCreate(Bundle savedInstanceState) { 
  2.     super.onCreate(savedInstanceState); 
  3.     setContentView(R.layout.activity_mine); 
  4.  
  5.     Bundle extras = getIntent().getExtras(); 
  6.     if (extras != null) { 
  7.         int row = extras.getInt("row"); 
  8.         .... 
  9.      } 
  10.      ... 
  11.  } 

大家也可以利用Intent來觸發(fā)各類事件,例如實現(xiàn)表格共享:

 
 
 
 
  1. Intent sendIntent = new Intent(); 
  2.  sendIntent.setAction(Intent.ACTION_SEND); 
  3.  sendIntent.putExtra(Intent.EXTRA_TEXT, "Share This"); 
  4.  sendIntent.setType("text/plain"); 
  5.  startActivity(sendIntent); 

IBOutlet

也許大家跟我一樣,在超過半數(shù)的情況下會忘記連接IBOutlet。

在Android當中,每一個場景/組件都擁有獨立的ID,內容如下所示:

 
 
 
 
  1. @+id/myButton 

它隨后會自動生成一個名為R的類(大家可以點擊此處了解與R相關的信息),接下來我們可以如下所示訪問代碼中的按鈕:

 
 
 
 
  1. Button button = (Button)findViewById(R.id.myButton); 

標簽

iOS開發(fā)者們經(jīng)常使用的一項技巧就是利用場景標簽來保存查找信息,例如整體布局的位移。在Android環(huán)境下,大家也可以將整個對象加入到標簽當中,這種作法非常實用。

 
 
 
 
  1. row.setTag(data); 

UITableViewController / UITableViewDataSource / UITableViewCell

Android當中的ListView就相當于iOS上的UITableView。

而UITableViewDataSource在Android中所對應的則是ArrayAdapter:

 
 
 
 
  1. MyAdapter adapter = new MyAdapter(this, R.layout.listview_item_row); 
  2.    listView.setAdapter(adapter); 

其中l(wèi)istviewitemrow屬于某一行的布局,相當于iOS中的UITableViewCell。

其中的adapter隨后會在getView當中創(chuàng)建/重新使用各行。

大家也可以像這樣設置標題:

 
 
 
 
  1. View header = getLayoutInflater().inflate(R.layout.listview_header_row, null); 
  2.     listView.addHeaderView(header); 

互聯(lián)網(wǎng)上提供了大量優(yōu)秀的指導教程,感興趣的朋友可以點擊此處查看其中之一。

圖片/資源

由于有了Asset Catalogue的輔助,iOS環(huán)境下的圖片處理變得非常輕松,通常情況下開發(fā)者只需考慮視網(wǎng)膜屏與非視網(wǎng)膜屏這兩種情況(除非大家想要在iPhone上使用專門針對iPad的圖片)。

由于Android陣營下各款設備的分辨率千差萬別,因此大家必須要提供以下四種圖片格式。

它們分別是:mdpi(普通分辨率)、hdpi(高分辨率)、xhdpi(超高分辨率)以及xxhdpi(超超高分辨率)。我個人認為xxxhdpi版本的誕生將只是時間問題。

在利用Android Studio創(chuàng)建項目時,大家只需要提供一份圖標、它就能自動創(chuàng)建出這四種格式。這種作法相信已經(jīng)給從事過Android應用開發(fā)的朋友們留下了嚴重的心理陰影:別怕,大家可以隨后手動將其替換為***的像素版本。

因此,最基本的解決思路就是為每幅圖片針對每種像素密度創(chuàng)建一個單獨的版本,為其設定同樣的名稱并放在正確的文件夾之下;這樣Android就會視設備平臺的具體情況挑選理想的版本。

自定義字體

自定義字體在Android上實現(xiàn)起來同樣非常簡單:將字體復制到main/assets當中,而后就能利用以下代碼加以調用:

 
 
 
 
  1. Typeface font = Typeface.createFromAsset(getAssets(), "Lato-Regular.ttf"); 
  2.         textView.setTypeface(font); 

問題在于這種方式并不是在所有設備上都行得通,因此大家需要準備一套后備字體——不過我自己手頭的兩臺Android設備都沒有提供這樣的字體。

NSLog

日志看起來沒什么可講的,大家可以利用它來進行應用程序調試什么什么的(此處省去一千字)。System.out.println(..)似乎也同樣能夠完成這項任務。

向下兼容能力

我們都聽說過Android設備的碎片化問題。不過從本質上講,處理舊版本Android的難度并不比在舊版本iOS上使用新型iOS功能更高。不過大家可能需要對這種兼容能力加以高度重視,畢竟Android環(huán)境下這類問題的出現(xiàn)頻率要遠高于iOS。

我們可以通過下列代碼來檢查當前Android版本:

 
 
 
 
  1. if (Build.VERSION.SDK_INT >= 11.0)  { 
  2. ... 

以下代碼則用于防止函數(shù)調用引發(fā)的警告信息:

 
 
 
 
  1. @SuppressLint({"NewApi", "LocalSuppress"})  
  2. private void myFunction() {  
  3. ...  
  4. }  

千奇百怪的漫長Android之旅

CountDownTimer

CountDownTimer——這項內置功能的存在實在讓我興奮不已,因為這正是我的七分鐘鍛煉應用所必需的要素。然而經(jīng)過實際測試,它不會在onFinish之前發(fā)送***一次onTick,這是個非常詭異的bug而且到現(xiàn)在也沒能得到修復。詭異,真是太詭異了。

方位

當用戶轉動手中的設備時,我們的activity也會完全重置,這意味著大家必須在activity重新載入之后為其保留全部狀態(tài)與恢復機制。Android環(huán)境下的處理方式令人頭痛,但iOS則處理得很好。

Kindle Fire / Amazon Store

要讓自己的應用程序順利入駐Amazon Store,我只需要對現(xiàn)有成果作出兩項調整:

·YouTube SDK無法起效,因為Kindle Fire上不提供YouTube應用。不過對Flash的支持能力依然被保留下來。

·大家需要針對Amazon Store替換應用購買代碼。

大家可以利用android.os.Build.MANUFACTURER以及android.os.Build.MODEL對設備的制造商以及產(chǎn)品型號信息進行檢測。

點擊此處查看關于Kindle Fire各機型的詳細信息。


本文名稱:適用于iOS開發(fā)者的Android開發(fā)技巧
文章網(wǎng)址:http://m.5511xx.com/article/djghhhi.html