編輯:關於Android編程
最近都會有些碎片時間學習,所以文章會繼續跟著更,因為東西還是比較連貫的,所以有興趣的小伙們可以從頭開始看,或者從專欄開始選。
老規矩再安利下:Android">https://github.com/ddwhan0123/Useful-Open-Source-Android
今天公司的網簡直是卡的不能再卡了,外加周一綜合症,整體干活沒啥狀態,不過該發的還得發,所以硬著頭皮也得上了,不過真是卡的不行,憂傷。
在iOS/Android都有一樣的實現,使得有限的屏幕裡有著無限的拓展空間,同樣的有2種模式,水平和垂直。
我們來看下官方豎直方向的例子:
import React, { Component } from 'react'; import{ AppRegistry, ScrollView, Image, Text, View } from 'react-native' class IScrolledDownAndWhatHappenedNextShockedMe extends Component { render() { return(); } } AppRegistry.registerComponent( 'IScrolledDownAndWhatHappenedNextShockedMe', () => IScrolledDownAndWhatHappenedNextShockedMe); Scroll me plz If you like Scrolling down What's the best Framework around? React Native
和我們的理解類似,他是一個可拉伸的師徒,當內容超過一屏幕時,通過操作滑動/方法調用無論多長,多大的內容都會被展現出來。
vc+087XEsu7S7DwvcD4NCjxwPkxpc3RWaWV31Nq0tL2o1q6z9bKisrvBory05NbIvsv509DUqsvYo6y2+MrH08XPyOTWyL7GwcS7yc+/ybz7tcTUqsvYLFNjcm9sbFZpZXfKx8irsr/k1si+oaM8L3A+DQo8cD5MaXN0Vmlld8Tasr+1xL/YvP7Kx9PQuebCybXEo6y2+FNjcm9sbFZpZXeyosO709CjqMbkyrW+zcrHINPQw7vT0CBpdGVttcS4xcTuo6k8L3A+DQo8cD5MaXN0Vmlld9PQMrj2sdixuLXEyvTQ1LfWsfDKxyA8c3Ryb25nPmRhdGFTb3VyY2U8L3N0cm9uZz4gLDxzdHJvbmc+cmVuZGVyUm93PC9zdHJvbmc+PC9wPg0KPHA+PHN0cm9uZz5yZW5kZXJSb3c8L3N0cm9uZz4gttTTplVJ1+m8/jwvcD4NCjxwPjxzdHJvbmc+ZGF0YVNvdXJjZTwvc3Ryb25nPiC21NOmyv2+3dS0PC9wPg0KPHA+ztLDx8C0v7TPwiC52be9zOG5qbXEU2FtcGxlPC9wPg0KPHA+0Ke5+6O6PC9wPg0KPHA+PGltZyBhbHQ9"這裡寫圖片描述" src="/uploadfile/Collfiles/20160823/20160823091109314.png" title="\" />
import React, { Component } from 'react'; import { AppRegistry, ListView, Text, View } from 'react-native'; class ListViewBasics extends Component { // Initialize the hardcoded data constructor(props) { super(props); const ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2}); this.state = { dataSource: ds.cloneWithRows([ 'John', 'Joel', 'James', 'Jimmy', 'Jackson', 'Jillian', 'Julie', 'Devin' ]) }; } render() { return (); } } // App registration and rendering AppRegistry.registerComponent('ListViewBasics', () => ListViewBasics); {rowData} } />
在構造函數中用 rowHasChanged回調監聽item的變化
state初初始化數據源
每一行為一個,並進行賦值
ListView是一個比較重要的組件,這裡再花更多的時間來介紹下,方便大家理解便於後期使用。
如何初始化,實例化一個基礎的ListView?
需要以下幾步:
創建一個ListView.DataSource數據源,然後給它傳遞一個普通的數據數組
使用數據源來實例化一個ListView組件
定義它的renderRow回調函數,這個函數會接受數組中的每個數據作為參數,返回一個可渲染的組件作為每一行的Item
RN給與我們豐富的API讓我們可以給 ListView添加 foot 和 header,包括一系列豐富的回調函數,諸如在到達列表尾部的時候調用回調函數(onEndReached),還有在視野內可見的數據變化時調用回調函數(onChangeVisibleRows),以及一些性能方面的優化。
還有諸如局部刷新的 rowHasChanged函數 以及渲染控制等等。
API屬性/方法:
ScrollView props…
因為在RN中ListView繼承於 ScrollView 所以ListView擁有ScrollView的所有屬性。
dataSource ListViewDataSource
列表依賴的數據源
initialListSize number
在組件初始化的時候渲染多少行數據,有助於性能提升
onChangeVisibleRows function
(visibleRows, changedRows) => void
當可見的item的集合變化的時候調用此回調函數。
onEndReached function
當所有的數據都已經渲染過,並且列表被滾動到距離最底部不足onEndReachedThreshold個像素的距離時調用,初始化時如果沒數據也會被調用。
onEndReachedThreshold number
調用onEndReached之前的臨界值,單位是像素。
pageSize number
每次事件循環(每幀)渲染的行數。
NavigationBar可以手動隱藏,隨著華為榮耀手機有了這個特點後,目前有很多android手機都有該特性。如下截圖所示: 上圖的底部虛擬導航按鈕的左、右邊
今天在做項目的時候用到了圖表功能,記錄下來achartengine是google的一個開源項目,可以在https://code.google.com/p/acharten
1、先推薦一個輕量級緩存框架——ACache(ASimpleCache)ACache介紹:ACache類似於SharedPrefere
有些在使用越獄工具的朋友反映,使用過程中會提示“沒有找到蘋果設備”,由於這個錯誤提醒導致越獄不能繼續進行。當遇到這種情況我們應該怎麼