成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

電影天堂React Native 客戶端V2.0發(fā)布

MockingBird / 2149人閱讀

摘要:電影天堂客戶端重新開始具體更新以為準(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
    }
})

//

    111
    111
    111
 
//
20181125

使用context管理全局?jǐn)?shù)據(jù)

/util/store.js

歷史記錄,收藏,主題(廢棄,下面有其他方式實現(xiàn))

export const Store = createContext(initialStore);


    {this.props.children}
20181127

影視詳情頁面

./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)系

[email protected]

或者直接提 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

相關(guān)文章

  • 電影天堂React Native 戶端

    摘要:電影天堂客戶端經(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)...

    PrototypeZ 評論0 收藏0
  • JSer全棧化技術(shù)棧推薦(一)——原生移動端是天堂還是泥潭

    摘要:隨著以服務(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...

    VPointer 評論0 收藏0
  • JSer全棧化技術(shù)棧推薦(一)——原生移動端是天堂還是泥潭

    摘要:隨著以服務(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...

    includecmath 評論0 收藏0
  • JSer全?;夹g(shù)棧推薦(一)——原生移動端是天堂還是泥潭

    摘要:隨著以服務(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...

    Kyxy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<