摘要:電影天堂客戶端重新開始具體更新以為準(zhǔn)。重新開始兩年前發(fā)布了第一個版本。最為一名偏體驗偏設(shè)計的前端開發(fā)者,對界面和用戶體驗都有極高的重視。
電影天堂React Native 客戶端
重新開始!
具體更新以https://github.com/XboxYan/DYTT為準(zhǔn)。
重新開始兩年前發(fā)布了第一個版本。
現(xiàn)在,
使用最新的react-native 0.57和全新的設(shè)計完成了V2.0
免責(zé)聲明本項目僅供學(xué)習(xí)交流使用,不得用于其他商業(yè)行為,數(shù)據(jù)來源于第三方網(wǎng)站,與本人無關(guān)
為什么要重新開始呢有很多小伙伴發(fā)郵件問我為什么之前的項目運行不起來。
其實這個是我自己的原因,之前做的時候沒什么經(jīng)驗,很多時候就直接修改了第三方庫,所以就運行不起來了
還有就是第三方api也做了很大的變動
react-native和其他第三方庫都更新了許多,正好重新開始,把一些新特性都利用起來(比如context),完整的來做一個項目,這比單純的學(xué)習(xí)看文章要有效的多
正常的app本來就是需要長期維護更新的,只不過由于是個人項目,很多時候完成一個階段就會因為各種原因而被耽擱,精力有限實屬無奈
特色大概是全網(wǎng)個人影視類項目最漂亮、體驗最好的了吧(下方有截圖~)。
最為一名偏體驗偏設(shè)計的前端開發(fā)者,對界面和用戶體驗都有極高的重視。
(見過很多類似的,功能算是出來了,但是界面一看就是程序員風(fēng)格)
演示視頻
項目依賴依賴項不多,大部分都是用原生自帶組件完成
{ "name": "DYTT", "version": "2.0.0", "private": true, "scripts": { "start": "node node_modules/react-native/local-cli/cli.js start", "test": "jest" }, "dependencies": { "react": "16.6.1", "react-native": "0.57.5", "react-native-gesture-handler": "^1.0.9", "react-native-scrollviewpager": "^1.0.3", "react-native-splash-screen": "^3.1.1", "react-native-swiper": "^1.5.14", "react-native-vector-icons": "^6.1.0", "react-native-video": "^4.0.1", "react-navigation": "^3.0.0" }, "devDependencies": { "babel-jest": "23.6.0", "jest": "23.6.0", "metro-react-native-babel-preset": "0.49.2", "react-test-renderer": "16.6.1" }, "jest": { "preset": "react-native" } }安裝
github 項目地址
本項目適用于相關(guān)技術(shù)人員學(xué)習(xí)交流,請自行編譯安裝
git clone https://github.com/XboxYan/DYTT.git cd DYTT yarn react-native run-android下載
目前只有安卓版本下載,需要ios的可以自行編譯安裝
下載鏈接
二維碼
(微信掃碼可能不支持,建議用其他掃描工具或者直接用瀏覽器打開上面鏈接)
考慮到安全問題,暫不提供安裝包,可通過上述方式安裝,或者與我聯(lián)系提供安裝包
相關(guān)截圖歡迎頁
首頁
功能菜單
歷史記錄
收藏
主題顏色
搜索
搜索結(jié)果
影片篩選
影片詳情
影片播放
更新記錄記錄一些頁面的關(guān)鍵點
20181123使用react-navigation作為導(dǎo)航
/App.js
由于新版導(dǎo)航用到了原生手勢庫,所以需要
yarn add react-native-gesture-handler react-native link react-native-gesture-handler
整體導(dǎo)航結(jié)構(gòu)如下
const Drawer = createDrawerNavigator({ Index: Index, History: History, Follow: Follow, Theme: Theme, },DrawerNavigatorConfig); const App = createAppContainer(createStackNavigator({ Drawer: Drawer, Search: Search, MovieContent: MovieContent, MovieDetail: MovieDetail, Comment: Comment, }, StackNavigatorConfig));
tab切換使用的是本人封裝導(dǎo)航器react-native-scrollviewpager
https://github.com/XboxYan/react-native-scrollviewpager
有興趣的可以給個star
使用方式比較簡單
yarn add react-native-scrollviewpager
import Scrollviewpager from "react-native-scrollviewpager"; const tabBarOptions = (themeColor) => ({ style:{ paddingHorizontal:10, height:40, backgroundColor:"#fff" }, labelStyle:{ color:"#666" }, activeTintColor:themeColor, indicatorStyle:{ width:20, borderRadius:4, height:3, backgroundColor:themeColor, bottom:2 } }) //20181125// 111 111 111
使用context管理全局?jǐn)?shù)據(jù)
/util/store.js
歷史記錄,收藏,主題(廢棄,下面有其他方式實現(xiàn))
export const Store = createContext(initialStore);20181127{this.props.children}
影視詳情頁面
./src/page/MovieDetail.js
頭部滾動跟隨效果使用Animated.ScrollView實現(xiàn)
scrollTop = new Animated.Value(0); //...//...
視頻播放器自定義外觀
./src/components/Video.js
使用開源播放器react-native-video
https://github.com/react-native-community/react-native-video
這里有一個bug
source={{uri:uri}},uri不能為空字符串,否則切換資源部生效
支持手勢快進快退,自動隱藏播放欄
還未完成的功能
全屏切換
20181203主題顏色
./App.js、./src/page/Theme.js
react-navigation內(nèi)置屬性screenProps,其原理仍然使用的context特性
調(diào)用方式
const {navigation,screenProps:{themeColor}} = this.props;20181204
歷史記錄
./src/page/History.js
通過context傳遞數(shù)據(jù),需設(shè)置contextType
import { Store } from "../../util/store"; export default class History extends PureComponent { render() { const { historyList } = this.context; return ( //... ) } } History.contextType = Store;20181205
收藏頁面
./src/page/Follow.js
與"歷史記錄"基本一致
20181206本地存儲
./util/storage.js
使用原生AsyncStorage
class Storage { /** * 獲取 */ static get = async (key) => { try { const value = await AsyncStorage.getItem(key); if (value !== null) { // We have data!! return JSON.parse(value) } else { return false } } catch (error) { return false } } /** * 保存 */ static save = async (key, value) => { try { await AsyncStorage.setItem(key, JSON.stringify(value)); return true } catch (error) { // Error saving data return false } } } export default Storage;20181209
搜索
./src/page/Search.js
20181211影片篩選
./src/page/MovieContent.js
使用側(cè)邊導(dǎo)航欄,調(diào)用方式與原生DrawerLayoutAndroid一致
import DrawerLayout from "react-native-gesture-handler/DrawerLayout";20181214
圖標(biāo),啟動圖
使用開源庫react-native-splash-screen
https://github.com/crazycodeboy/react-native-splash-screen#readme
如果需要白底深色的狀態(tài)欄文字
2.0 基本完成
20181217安卓打包
./android/build.gradle
修改一下配置
注釋jcenter(),添加
maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"} maven{ url "https://jitpack.io" }
不然會卡在下載階段
... allprojects { repositories { mavenLocal() google() //jcenter() //更換國內(nèi)鏡像 maven{ url "http://maven.aliyun.com/nexus/content/groups/public/"} maven{ url "https://jitpack.io" } maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } } } ...
常用命令
# 卸載安裝包 adb uninstall com.packgeName # 生成Release包 gradlew assembleRelease # 安裝Release包 gradlew installRelease
注意:在 debug 和 release 版本間來回切換安裝時可能會報錯簽名不匹配,此時需要先卸載前一個版本再嘗試安裝。還未完成的還接下來要做的
可通過 adb uninstall com.packgeName 方式來卸載,直接通過長按桌面圖標(biāo)有可能卸載不干凈
視頻播放做全屏切換
沒有適配ios,不過代碼中沒有使用安卓專有的庫,理論上可以直接運行(可能有少部分需要適配),有興趣的小伙伴可以fork下來自己適配一下
會新增設(shè)置選項,進行網(wǎng)絡(luò)設(shè)置,播放設(shè)置等(會參考其他視頻軟件的功能)
目前歷史記錄和收藏均保存在本地,意味著如果卸載app將導(dǎo)致數(shù)據(jù)丟失,如果可能的話,將來把數(shù)據(jù)保存在自己的服務(wù)器上
react-navigation在頁面切換時略微卡頓,還有一個react-native-navigation,如果可能的話,可以用來替代react-navigation
目前在網(wǎng)上找的api可能不夠理想,如果誰有更好的設(shè)計和更好的api可以參考一下~如果有提供后臺服務(wù)的就更好了
react-native確實性能略顯不足,特別是長列表的情況,準(zhǔn)備學(xué)習(xí)flutter,一種新的渲染方式(類似于web中的canvas)
聯(lián)系方式有什么問題可以與我聯(lián)系
或者直接提 issue
原文地址
https://blog.codelabo.cn/article/5c18911f8aab210ff34d0147
https://github.com/XboxYan/DYTT
打賞精神支撐一下,給個 star 唄
如果體驗覺得還不錯的話,大佬們可以隨意打賞,金額不限
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100140.html
摘要:電影天堂客戶端經(jīng)過二十多天的奮戰(zhàn),電影天堂客戶端初步完成,最新的影片資源等你來體驗嚴(yán)重聲明本項目中所用的來自電影天堂作者郵箱通過抓包工具所得,項目中所有內(nèi)容的一切權(quán)利屬于電影天堂,本項目所有內(nèi)容及代碼僅供私下學(xué)習(xí)參考,不得作為其他用途。 電影天堂React Native 客戶端 經(jīng)過二十多天的奮戰(zhàn),電影天堂for React Native 客戶端初步完成,最新的影片資源等你來體驗! 嚴(yán)...
摘要:隨著以服務(wù)器端的桌面端的和原生移動端為代表的全棧迅猛發(fā)展,真正生產(chǎn)環(huán)境中的前端技術(shù)全?;呀?jīng)逐漸變?yōu)榭赡?。不過在一段時間之內(nèi),還是會繼續(xù)向前沖。在剛剛結(jié)束的大會上,的作者宣布成為的技術(shù)顧問。 隨著以服務(wù)器端的NodeJS、桌面端的Electron和原生移動端React Native為代表的全棧JS迅猛發(fā)展,真正生產(chǎn)環(huán)境中的JS/前端技術(shù)全棧化已經(jīng)逐漸變?yōu)榭赡?。盡管在前端以外的領(lǐng)域里,J...
摘要:隨著以服務(wù)器端的桌面端的和原生移動端為代表的全棧迅猛發(fā)展,真正生產(chǎn)環(huán)境中的前端技術(shù)全?;呀?jīng)逐漸變?yōu)榭赡堋2贿^在一段時間之內(nèi),還是會繼續(xù)向前沖。在剛剛結(jié)束的大會上,的作者宣布成為的技術(shù)顧問。 隨著以服務(wù)器端的NodeJS、桌面端的Electron和原生移動端React Native為代表的全棧JS迅猛發(fā)展,真正生產(chǎn)環(huán)境中的JS/前端技術(shù)全?;呀?jīng)逐漸變?yōu)榭赡?。盡管在前端以外的領(lǐng)域里,J...
摘要:隨著以服務(wù)器端的桌面端的和原生移動端為代表的全棧迅猛發(fā)展,真正生產(chǎn)環(huán)境中的前端技術(shù)全?;呀?jīng)逐漸變?yōu)榭赡?。不過在一段時間之內(nèi),還是會繼續(xù)向前沖。在剛剛結(jié)束的大會上,的作者宣布成為的技術(shù)顧問。 隨著以服務(wù)器端的NodeJS、桌面端的Electron和原生移動端React Native為代表的全棧JS迅猛發(fā)展,真正生產(chǎn)環(huán)境中的JS/前端技術(shù)全?;呀?jīng)逐漸變?yōu)榭赡?。盡管在前端以外的領(lǐng)域里,J...
閱讀 5072·2021-09-07 09:58
閱讀 797·2019-08-30 15:55
閱讀 2935·2019-08-30 15:55
閱讀 927·2019-08-30 15:53
閱讀 1562·2019-08-29 12:57
閱讀 1829·2019-08-26 13:46
閱讀 571·2019-08-26 11:00
閱讀 3668·2019-08-23 15:42