楠木軒

【科技早報】谷歌將Android 8.0命名為Oreo 投資者建議Uber與特斯拉合併

由 卯秀珍 發佈於 綜合

  谷歌正式宣佈將Android 8.0命名為Oreo

  北京時間8月22日凌晨,谷歌在紐約市召開發佈會,正式宣佈Android 8.0操作系統將被命名為“奧利奧”(Oreo)。另外,谷歌還在加州山景城公司總部發布了官方“奧利奧”超級英雄Bugdroid雕像。

  在宣佈Android 8.0命名後不久,谷歌Android工程副總裁戴夫·伯克(Dave Burke)通過Twitter消息發佈了位山景城總部園區的官方雕像的照片。跟此前幾年有所不同的是,當時的Bugdroid雕像都是站在“美味點心”的旁邊或是頂上的,而今年的雕像則將奧利奧的主題整合到了人物中去。另外,這個Android超級英雄雕像的身旁四周還堆滿了奧利奧餅乾。

  谷歌還在紐約市和山景城發佈會上分發了成包的奧利奧餅乾,這些餅乾上都有標準的“奧利奧”Bugdroid形象,其奶油夾心是綠色的。

  投資者建議Uber與特斯拉合併 馬斯克任CEO

  北京時間8月21日晚間消息,Uber早期投資者詹森·卡拉坎尼斯(Jason Calacanis)日前表示,Uber應與特斯拉合併,由特斯拉CEO埃隆·馬斯克(Elon Musk)兼任Uber CEO。

  卡拉坎尼斯認為,Uber與特斯拉合併後,Uber將可以獲得其迫切需要的自動駕駛技術,同時還能將特斯拉的業務拓展到更多市場。

  卡拉坎尼斯早在2009年就投資了Uber,他説:“如果兩家公司合併,新公司將戰勝當前交通服務流域的任何一家競爭對手。”

  Intel正式宣佈第八代酷睿處理器:首發15W低壓

  8月21日晚,Intel發佈了最新的第八代Core處理器,和之前預料的一樣,首發的是TDP為15W的低壓處理器,主要用於超極本上面。

  Intel率先在今天發佈的共有四款處理器,分別是Core i7-8650U、Core i7-8550U、Core i5-8350U、Core i5-8250U。這四款處理器均採用四核心八線程設計,根據之前的曝光,性能比7代提升50%左右。

  這四款處理器的具體架構名字叫做Kaby Lake Refresh,即使是i5也是採用四核八線程設計,不過由於TDP的限制,頻率方面基準均低於2GHz,不過最高Boost可以達到4.2GHz。

  Intel還表示桌面版的Coffee Lake處理器將於2017年四季度正式發佈,而基於10nm的Cannon Lake將於2018年第一季度到來。

  iPhone 8的人臉識別速度將達到百萬分之一秒級別

  根據來自韓國媒體《韓國先驅報》的最新消息稱,三星目前正在為蘋果iPhone 8生產OLED顯示屏。而這塊屏幕所使用的面部識別系統,只需要百萬分之一秒的時間,就能完成整個識別過程。

  之前有消息稱,蘋果將在iPhone 8上放棄一直都在使用的Touch ID指紋識別系統,並且用人臉識別功能來取代前者作為Apple Pay等服務身份識別的驗證方式。

  同時根據《華爾街日報》的消息稱,iPhone 8的人臉識別系統還整合了紅外功能,因此即使在黑暗或光線比較弱的環境中,依然可以正常工作。

  三星官方自曝Note 8外型

  8月22日,有網友發現,三星網站的“臨時工”在官網放出了Note 8的渲染圖,並在隨後立即刪除。

  相比於上半年推出的Galaxy S8,Note 8要顯得更加方正一些,該機保留了18.5:9比例的全視曲面屏,S-Pen依舊會是這款手機的一大賣點。

  根據澳洲媒體Ausdroid帶來的三星Galaxy Note 8營銷手冊諜照顯示,Note 8的外形與此前泄露的渲染圖沒有什麼區別,6.3英寸QHD+分辨率的全視曲面屏,背面則配有平行排列的雙攝像頭和後置指紋解鎖模塊,具備IP68級防水防塵功能,支持虹膜識別和無線充電功能。

  配置上,Note8的雙攝像頭能帶來2x光學變焦功能,擁有F1.7的大光圈,支持光學防抖技術。此外,三星Note 8還將與Smart Switch軟件兼容,以幫助用户從舊手機中轉移照片、聯繫人和歌曲等文件。


  在上一節一起了解了ListView的簡單使用,那麼本節繼續來學習與ListView有着千絲萬縷的Adapter。

  一、瞭解MVC模式

  在開始學習Adapter之前我們要來了解下這個MVC模式。説起MVC模式,估計很多同學已經或多或少聽説過,可能在前面的Java開發中也有所接觸。

  MVC全名是Model View Controller,是模型(model)、視圖(view)、控制器(controller)的縮寫。一種軟件設計典範,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件裏面,在改進和個性化定製界面及用户交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用於映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用户界面的結構中。

  MVC各組件之間的關係如下圖所示,可以清楚的知道各層之間的聯繫。

  在Android開發中,比較流行的開發框架模式採用的是MVC框架模式,採用MVC模式的好處是便於UI界面部分的顯示和業務邏輯,數據處理分開。那麼Android項目中哪些代碼來充當M、V、C角色呢?

  Android 鼓勵弱耦合和組件的重用,Android 中MVC的具體體現如下:

  模型(model):是應用程序的主題部分,所有的業務邏輯都應在該層(對數據庫的操作、對網絡等的操作都應該在model裏面處理,當然對計算等操作也是必須放在該層的)。

  視圖層(view):是應用程序中負責生成用户界面的部分。也是整個MVC架構中用户唯一可以看到的一層,接收用户的輸入,顯示用户的處理結果。一般用XML文件進行界面的描述,使用的時候可以非常方便的引入。

  控制層(controller):是根據用户的輸入,控制用户界面數據顯示及更新model對象狀態的部分。Android的控制層的重任通常落在了眾多Activity的肩上,這句話也就暗含了不要在Activity中寫過多代碼,要通過Activity交給model業務邏輯處理層處理,這樣做的另外一個原因是Android中的Activity的響應時間是5秒,如果耗時的操作放在這裏,程序很容易無響應。

  在MVC模式中其實控制器Activity主要是起到解耦作用,將View視圖和Model模型分離,雖然Activity起到交互作用,但是一般在Activity中有很多關於視圖UI的顯示代碼,因此View視圖和Activity控制器並不是完全分離的,也就是説一部分View視圖和Contronller控制器Activity是綁定在一個類中的。

  使用MVC模式的優點:

  耦合性低。所謂耦合性就是模塊代碼之間的關聯程度。利用MVC框架使得View(視圖)層和Model(模型)層可以很好的分離,這樣就達到了解耦的目的,所以耦合性低,減少模塊代碼之間的相互影響。

  可擴展性好。由於耦合性低,添加需求,擴展代碼就可以減少修改之前的代碼,降低bug的出現率。

  模塊職責劃分明確。主要劃分層M、V、C三個模塊,利於代碼的維護。

  什麼時候適合使用MVC設計模式?當然一個小的項目且無需頻繁修改需求就不用MVC框架來設計了,那樣反而覺得代碼過度設計,代碼臃腫。一般在大型項目中,且業務邏輯處理複雜,頁面顯示比較多,需要模塊化設計的項目使用MVC就有足夠的優勢了。

  二、Adapter概述

  Adapter是連接後端數據和前端顯示的適配器接口,是數據和UI(View)之間一個重要的紐帶。在常見的View(ListView、GridView)等地方都需要用到Adapter。

  Android的適配器負責為列表組件提供數據源,也負責將單獨的數據元素轉換為顯示在列表組件中的特定視圖,如ListView的適配器關係如下圖所示。

  Adapter本身只是一個接口,它派生了 ListAdapter和SpinnerAdapter兩個子接口,其中 ListAdapter 為 AbsListView 提供列表項,而 SpinnerAdapter 為 AbsSpinner 提供列表項。Adapter接口及其實現類的繼承關係圖如下圖所示。

  上圖中標紅粗線框標出的是比較常用的Adapter。從圖中可以看出幾乎所有的Adapter都繼承了 BaseAdapter,而BaseAdapter同時實現了 ListAdapter、SpinnerAdapter 兩個接口,因此 BaseAdapter 及其子類可以同時為 AbsListView、AbsSpinner提供列表項。

  Adapter的幾個常用實現類如下。

  ArrayAdapter:簡單、易用的Adapter,通常用於將數組或List集合的多個值包裝成多個列表項。

  SimpleAdapter:並不簡單、功能強大的Adapter,可用於將List集合的多個對象包裝成多個列表項。

  SimpleCursorAdapter:與SimpleAdapter基本相似,只是用於包裝Cursor提供的數據。

  BaseAdapter:通常用於被擴展,擴展BaseAdapter可以對各列表項進行最大限度的定製。

  那麼本節先通過一個示例學習如何使用ArrayAdapter創建ListView,關於SimpleAdapter和BaseAdapter會在後續幾期進行學習,而SimpleCursorAdapter會在數據庫部分進行學習。

  三、ArrayAdapter示例

  繼續使用WidgetSample工程的listviewsample模塊,在app/main/res/layout/目錄下創建arrayadapter_layout.xml文件,在其中填充如下代碼片段:

  接下來為ListView提供Adapter,Adapter決定了ListView所要顯示的列表項。在java包下創建ArrayAdapterActivity.java文件,加載上面新建的佈局文件,具體代碼如下:

  上面的程序中前面兩行粗體代碼創建了一個ArrayAdapter,創建ArrayAdapter時必須指定如下三個參數。

  context:要使用的上下文環境,幾乎創建所有組件都需要傳入Context對象。

  resource: 要使用的視圖資源 ID,該視圖將作為ArrayAdapter的列表項組件。這裏使用了Android系統中自帶的視圖資源,系統預定義的視圖資源主要有以下幾種:

  android.R.layout.simple_list_item_1: 單獨一行的文本框。

  android.R.layout.simple_list_item_2: 兩個文本框組成。

  android.R.layout.simple_list_item_checked: 每項都是由一個已選中的列表項。

  android.R.layout.simple_list_item_multiple_choice: 都帶有一個複選框。

  android.R.layout.simple_list_item_single_choice: 都帶有一個單選鈕。

  objects:要實際顯示的數組或List,將負責為多個列表項提供數據。 該數組或List包含多少個元素,就將生成多少個列表項。

  上面的程序中後面幾行粗體代碼為ListView列表項添加點擊事件監聽器,當用户點擊某列表項的時候,就會收到onItemClick事件,然後做消息提示或者其他需要的處理。

  修改啓動的Activity,然後運行程序,可以看到下圖左側所示列表界面。

  點擊列表中的某一項的時候,會彈出消息提示,如上圖右側所示。

  關於Adapter的簡單瞭解先到這裏,其他更復雜的Adapter使用後面陸續學習。

  今天就先到這裏,如果有問題歡迎留言一起探討,共同成長!

  此文章版權為今日頭條號分享達人就是我——鑫鱻所有,若需轉載請聯繫作者授權,特此聲明!

  往期總結分享:

  第1節:Android的前世今生

  第2節:Android 系統架構和應用組件那些事

  第3節:帶你一起來聊一聊Android開發環境

  第4節:正確安裝和配置JDK

  第5節:善用ADT Bundle

  第6節:配置優化SDK Manager

  第7節:搞定Android模擬器

  第8節:HelloWorld,第一趟旅程出發點

  第9節:Android實戰,不懂代碼也可以開發

  第10節:開發IDE迎來Android Studio

  第11節:運行Android Studio工程

  第12節:熟悉Android Studio界面

  第13節:Android Studio配置優化

  第14節:使用高速Genymotion

  第15節:掌握Android Studio項目結構

  第16節:Android用户界面開發概述

  第17節:TextView屬性和方法大全

  第18節:EditText的屬性和使用方法

  第19節:Button使用詳解

  第20節:CheckBox和RadioButton使用大全

  第21節:ToggleButton和Switch使用大全

  第22節:ImageView的屬性和方法大全

  第23節:ImageButton和ZoomButton使用

  第24節:自定義View簡單使用

  第25節:簡單且最常用的LinearLayout

  第26節:layout_gravity和gravity大不同

  第27節:正確使用padding和margin

  第28節:輕鬆掌握RelativeLayout相對佈局

  第29節:善用TableLayout表格佈局

  第30節:兩分鐘掌握FrameLayout幀佈局

  第31節:少用的AbsoluteLayout絕對佈局

  第32節:新推出的GridLayout網格佈局

  第33節: Android事件處理概述

  第34節:Android中基於監聽的事件處理

  第35節:Android中基於回調的事件處理

  第36節:Android系統事件的處理

  第37節:初識ListView

  (2017-08-18)


  通過對Android基本組件的學習,也有接觸少部分Android的事件處理,比如按鈕的點擊事件、選框的狀態切換事件。

  一、Android事件處理

  Android提供了兩種方式的事件處理:基於回調的事件處理和基於監聽的事件處理。

  基於監聽的事件處理:主要做法就是為Android界面組件綁定特定的事件監聽器,前面小節已經見到大量這種事件處理的示例。

  基於回調的事件處理:主要做法就是重寫Android組件特定的回調方法, 或者重寫Activity的回調方法。Android為絕大部分界面組件都提供了事件響應的回調方法,開發者只要重寫它們即可。

  一般來説,基於回調的事件處理可用於處理一些具有通用性的事件,基於回調的事件處理代碼會顯得比較簡潔。但對於某些特定的事件,無法使用基於回調的事件處理,只能採用基於監聽的事件處理。

  本期先來學習基於監聽的事件處理,後面再學習基於回調的事件處理,關注分享達人秀獲取第一手教程,也可以加小編好友拽入Android零基礎入門技術討論微信羣共同進步。

  二、基於監聽的事件處理概述

  基於監聽的事件處理是一種更“面向對象”的事件處理,在事件監聽的處理模型中主要涉及如下三類對象。

  Event Source (事件源):事件發生的場所,通常就是各個組件,例如按鈕、窗口、菜單等。

  Event (事件):事件封裝了界面組件上發生的特定事情(通常就是一次用户操作)。如果程序需要獲得界面組件上所發生事件的相關信息,一般通過Event對象來取得。

  Event Listener (事件監聽器):負責監聽事件源所發生的事件,並對各種事件做出相應的響應。

  當用户按下一個按鈕或者單擊某個菜單項時,這些動作就會激發一個相應的事件,該事件就會觸發事件源上註冊的事件監聽器(特殊的Java對象),事件監聽器調用對應的事件處理器 (事件監聽器裏的實例方法)來做出相應的響應。

  每個組件均可以針對特定的事件指定一個事件監聽器,每個事件監聽器也可監聽一個或多個事件源。因為同一個事件源上可能發生多種事件,委派式事件處理方式可以把事件源上所有可能發生的事件分別授權給不同的事件監聽器來處理;同時也可以讓一類事件都使用同一個事件監聽器來處理。

  Android事件處理流程如下圖所示:

  從上圖可以知道,基於監聽的事件處理模型的流程如下:

  為某個事件源(界面組件)設置一個監聽器,用於監聽用户操作。

  當用户操作時,會觸發事件源的監聽器。

  生成了對應的事件對象。

  將這個事件源對象作為參數傳給事件監聽器。

  事件監聽器對事件對象進行判斷,執行對應的事件處理器(對應事件的處理方法)。

  Android中基於監聽的事件處理模型的開發步驟如下。

  獲取普通界面組件(事件源),也就是被監聽的對象。

  實現事件監聽器類,該監聽器類是一個特殊的Java類,必須實現一個XxxListener接口。

  調用事件源的setXxxListener方法將事件監聽器對象註冊給普通組件(事件源)。

  對於這三件事情,事件源可以是任何界面組件,不太需要開發者參與;註冊監聽器也只要一行代碼即可,因此事件編程的關鍵就是實現事件監聽器類。

  在基於監聽的事件處理模型中,事件監聽器必須實現事件監聽器接口,Android為不同的界面組件提供了不同的監聽器接口,這些接口通常以內部類的形式存在。以View類為例,它包含了如下幾個內部接口。

  View.OnClickListener:單擊事件的事件監聽器必須實現的接口。

  View.OnCreateContextMenu Listener :創建上下文菜單事件的事件監聽器必須實現的接口。

  View.onFocusChangeListener:焦點改變事件的事件監聽器必須實現的接口。

  View.OnKeyListener:按鍵事件的事件監聽器必須實現的接口。

  View.OnLongClickListener:長按事件的事件監聽器必須實現的接口。

  View.OnTouchListener:觸摸事件的事件監聽器必須實現的接口。

  通過前面的學習,知道事件監聽器就是實現了特定接口的Java類的實例。在程序中實現事件監聽器,通常有如下幾種形式。

  匿名內部類形式:使用匿名內部類創建事件監聽器對象。

  內部類形式:將事件監聽器類定義成當前類的內部類。

  外部類形式:將事件監聽器類定義成一個外部類。

  Activity本身作為事件監聽器類:讓Activity本身實現監聽器接口,並實現事件處理方法。

  直接綁定到標籤形式:直接在xml佈局文件對應的Activity中定義一個事件處理方法,然後在佈局文件中引用要觸發的事件。

  三、使用匿名內部類作為事件監聽器

  大部分時候,事件處理器都沒有什麼複用價值(可複用代碼通常都被抽象成了業務邏輯方法),因此大部分事件監聽器只是臨時使用一次,所以使用匿名內部類形式的事件監聽器更合適。實際上,這種形式是目前使用最廣泛的事件監聽器形式,在前面的基本組件學習中也是使用的該種方法來綁定監聽器。

  接下來通過一個簡單的示例程序來學習Android使用匿名內部類作為事件監聽器。

  同樣使用WidgetSample工程,繼續使用app/main/res/layout/目錄下的activity_main.xml文件,在其中填充如下代碼片段:

  為了監聽按鈕的點擊事件,在Java代碼中為其添加點擊事件監聽器,具體代碼如下:

  上面程序中的粗體字部分使用匿名內部類創建了一個事件監聽器對象,“new監聽器接口”或“new事件適配器”的形式就是用於創建匿名內部類形式的事件監聽器。

  運行程序,點擊按鈕,可以看到下圖所示界面效果。

  對於使用匿名內部類作為事件監聽器類的形式來説,唯一的缺點就是匿名內部類的語法有點不易掌握,如果Java基礎紮實,匿名內部類的語法掌握較好,通常建議使用匿名內部類作為監聽器類。

  Android中基於監聽的事件處理的其他四種形式下期再繼續學習。

  今天就先到這裏,如果有問題歡迎留言一起探討,共同成長!

  此文章版權為今日頭條號分享達人就是我——鑫鱻所有,若需轉載請聯繫作者授權,特此聲明!

  往期總結分享:

  第1節:Android的前世今生

  第2節:Android 系統架構和應用組件那些事

  第3節:帶你一起來聊一聊Android開發環境

  第4節:正確安裝和配置JDK

  第5節:善用ADT Bundle

  第6節:配置優化SDK Manager

  第7節:搞定Android模擬器

  第8節:HelloWorld,第一趟旅程出發點

  第9節:Android實戰,不懂代碼也可以開發

  第10節:開發IDE迎來Android Studio

  第11節:運行Android Studio工程

  第12節:熟悉Android Studio界面

  第13節:Android Studio配置優化

  第14節:使用高速Genymotion

  第15節:掌握Android Studio項目結構

  第16節:Android用户界面開發概述

  第17節:TextView屬性和方法大全

  第18節:EditText的屬性和使用方法

  第19節:Button使用詳解

  第20節:CheckBox和RadioButton使用大全

  第21節:ToggleButton和Switch使用大全

  第22節:ImageView的屬性和方法大全

  第23節:ImageButton和ZoomButton使用

  第24節:自定義View簡單使用

  第25節:簡單且最常用的LinearLayout

  第26節:layout_gravity和gravity大不同

  第27節:正確使用padding和margin

  第28節:輕鬆掌握RelativeLayout相對佈局

  第29節:善用TableLayout表格佈局

  第30節:兩分鐘掌握FrameLayout幀佈局

  第31節:少用的AbsoluteLayout絕對佈局

  第32節:新推出的GridLayout網格佈局

  (2017-08-13)


  Android 8.0將會在8月上旬釋出,而Google將會優先讓自家Pixel及Nexus手機更新,而向來對於軟體更新積極的Sony Mobile ,也很可能會在2017 IFA登場的Xperia新機預載Android 8.0作業系統。

  Sony旗下可升級的手機名單有Xperia XZ Premium、Xperia XZS、Xperia XA1 Ultra、Xperia XA1、Xperia XZ、Xperia X Compact、Xperia X Performance、Xperia X,雖然名單內沒有出現Xperia Z5系列,不過這也並非是Sony Moible正式對外公告,僅供參考。暫時還有有國產手機的消息,有消息,第一時間通知大家。

  (2017-08-07)


  之前一直在百度閲讀維護的書 《愛上Android》,已經由人民郵電出版社出版。起這個書名的主要原因是我非常喜愛從事開發Android程序的事業,也非常熱愛分享技術。

  心理專家研究過人心理週期的變化,結論證實大部分人連續、專注的幹一件事的時間很難超過18個月。當你能堅持一件事做18個月的時候證明你至少戰勝了百分之九十的人。

  很慶幸的是,我成為了剩餘百分之十的人,堅持了兩年去完成這一本書。

  在此期間,我的角色也升級成了一位父親,我真的非常感謝我的妻子。寫書過程中佔用了很多本應是陪伴她的時間,但她毫無怨言,一直都在默默地支持我,才使得我能專心的投入我的工作以及寫作中。可以毫不誇張的説,沒有我妻子就沒有這本書的面世。

  本書主要特色

  1.堅持更新知識點

  互聯網技術發展一日千里。寫作的同時Android版本也在更新,兩年期間,Android 從6.0 預覽版到 8.0 預覽版。

  為了保證知識不過期,寫過的知識點我反覆更新了好幾個版本,甚至開始印刷前都在更新——今年5月底,Google官方認可 Kotlin 開發 Android,當時書也馬上開始印刷,我第一時間聯繫出版社,專門加了一節使用 Kotlin 開發 Android。

  不僅限於知識點更新,包括一些細節,比如封皮設計都仔細推敲:

  Android Studio 預覽版圖標顏色換了,不再是正式的安卓綠,而變成了醒目的黃色。預覽版的顏色更加能體現知識點迭代,為此我專門和出版社編輯溝通,把本書的封皮換成相近的顏色。

  2.錄製視頻

  我一直認為看書學習的效率要比看視頻快,但是剛入門的時候,看視頻更加直觀一些。

  為了滿足新手希望能快捷、方便入門的心理,我專門針對剛開始的幾章錄製了幾十段視頻。為了保證視頻的錄製質量,專門高價購買了外置聲卡和話筒。

  視頻絕不是照着書裏的文字念,而是把寫代碼的技巧、過程、思路都展現出來。

  每錄製一段十幾分鐘的視頻,我都需要花費將近一天的時間去準備,錄製效果差強人意的直接刪掉,重新進行錄製。

  本書主要內容

  書裏的基本內容主要包括,開發環境搭建,界面搭建,Activity知識,數據存儲,網絡編程,圖片處理,複雜控件,Fragment,廣播接受者,服務,動畫。除了這些還介紹了開發必不可少的技能,包括屏幕適配,性能優化,自定義控件和NDK編程。 最後一章通過一個完整的新聞客户端項目整合了前面的知識點。

  這絕不是一本中庸的書,裏面每個知識點都強調實用二字

  撰寫這本書的過程中,我傾盡了我的熱情與腦力,對每個知識點都深入剖析,既沒有盲目羅列一大段代碼留給讀者自己慢慢看的情況,也不會出現把所有的知識點都堆到一起讓讀者自行領會的消極態度,而是循序漸進的講述開發過程中必備的知識點,使讀者能在將來的實際開發過程中運用到很多。

  預售

  現在《愛上Android》已經在京東預售,歡迎購買。地址:

  京東-愛上Android http://item.jd.com/12144527.html

  試讀-愛上Android http://www.epubit.com.cn/book/details/4885

  説實在話,寫書真不是為了賺錢,尤其是技術性書籍,寫這本書還是希望自己能夠幫助到一些人。

  大家看了這本書之後,要是覺得寫得好,可以幫忙宣傳宣傳;要是覺得寫的不好,在博客或者公眾號裏留言,請指出不足之處,我會努力改正。

  謝謝大家!

  (2017-08-03)