RN中关于侧导航的tab切换设计思想
RN对于pad这块的应用以及组件比较少,项目中想要设计侧导航,但是并没有找到类似侧导航的组件。所以自己做了一个简单的tab切换,但是缺点就是点击的时候切换会比较慢,有待改进。
1. 首先配置json数组,数组中封装了导航需要的标题、icon、选中的icon以及切换的组件。
2. 设置初始状态flag。切换状态时切换成相应的组件。
3. 分别在组件中设置stack/tab路由则可以实现组件内部路由切换。
RN中关于扫码功能
扫码的组件在RN的社区中还是能够找到几种的。同时适配android,ios我只找到了两个: react-native-barcode-scanner-universal和ac-qrcode。安装第一种的时候总会报各种各样的花式错误,所以果断舍弃了第一种,拥抱第二种。
1. npm install ac-qrcode --save
2. 此外还需要安装npm install react-native-camera
3. 需要同react-native-camera link后才能使用:react-native link
4. 引用组件:
|
|
这个组件的好处是可以自定义扫码的样式以及展现形式
RN中禁止屏幕横屏/竖屏显示
android版本
pad的app应用规定只能横屏显示,只需要修改配置文件即可。landscape-横屏,portrait-竖屏。
在AndroidManifest.xml文件中
|
|
另外,android中每次屏幕方向切换时都会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置。要避免在转屏时重启activity,可以通过在androidmanifest.xml文件中重新定义方向(给每个activity加上android:configChanges=”keyboardHidden|orientation”属性),并根据Activity的重写onConfigurationChanged(Configuration newConfig)方法来控制,这样在转屏时就不会重启activity了,而是会去调用onConfigurationChanged(Configuration newConfig)这个方法。
原创:http://www.open-open.com/lib/view/open1328278861750.html
iOS 版本
- 在Xcode 中的General>Deployment中修改orientation中相应的项。
- 在info.plist>support interface orientation 中不相关的项删除
RN中设置桌面图标及名称
1.名称修改打开android/app/src/main/res/values/strings.xml:
|
|
2.图标修改android\app\src\main\res\mipmap-xxxxxx中直接覆盖图标就可以.
RN中设置启动页避免启动白屏问题
在网络上找到几个关于启动页白屏的插件,其中react-native-splash-screen深得朕心。不过使用的时候要注意对RN的版本限制,React Native >= 0.47.0 use v3.+, for React Native < 0.47.0 use v2.0.0+。因为是pad端所以启动页图片尺寸设置的是屏幕的分辨率
- 安装:npm install react-native-splash-screen –save
- react-native link react-native-splash-screen
在MainApplication.java中添加
12345678910111213import com.cboy.rn.splashscreen.SplashScreenReactPackage;public class MainApplication extends Application implements ReactApplication {private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {@Overrideprotected List<ReactPackage> getPackages() {return Arrays.<ReactPackage>asList(new MainReactPackage(),new SplashScreenReactPackage() //here);}};}在MainActivity.java中添加
123456789101112import android.os.Bundle;import com.facebook.react.ReactActivity;import com.cboy.rn.splashscreen.SplashScreen; // herepublic class MainActivity extends ReactActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {SplashScreen.show(this); // heresuper.onCreate(savedInstanceState);}// ...other code}在js入口文件中导入react-native-splash-screen
1import SplashScreen from 'react-native-splash-screen'在app/src/main/res/layout中创建launch_screen.xml文件
123456<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/launch_screen"></LinearLayout>在app/src/main/res/下创建下列文件夹,并且添加名为launch_screen.png文件:
12drawable-xhdpidrawable-xxhdpi在js入口文件中使用:
12345678910import SplashScreen from 'react-native-splash-screen'export default class WelcomePage extends Component {componentDidMount() {// do stuff while splash screen is shown// After having done stuff (such as async tasks) hide the splash screenSplashScreen.hide();}}
RN中关于文件管理的展示(类似面包屑功能)
主要思想是使用react-native状态控制该显示哪一条数据,刚开始想用react-native导航路由跳转实现,问题是数据不固定,导航不适用。以下为主要代码:
觉得代码量比较多,还有更简单的方法,待改进。
RN中native-echarts组件打包时遇到的问题
使用:
- npm install native-echarts –save
- 12import Echarts from 'native-echarts'<Echarts option={alarmBarOption}/>
打包生成apk-release时无法显示统计图表:
|
|