react native 适配机顶盒、智能电视 遥控器解决焦点问题
2017-05-23 14:52
495 查看
上一篇文章详细讲解了我自己搭建react native 的开发环境,现在就给大家介绍下如何自定义自己的原声view 、实现自己的适配,这里主要是机顶盒遥控器的适配,react native 本身不支持遥控器焦点,我们自己实现支持焦点:
第一步、定义java的包管理
/**
* Created by thinkpad on 2017/2/22.
*/
public class AnExampleReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return null;
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return null;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(new ReactViewManager());
}
}
第二步、定义java的view
public class CircleView extends TextView {
public CircleView(final Context context) {
super(context);
this.setText("asdfdsafd");
this.setFocusable(true);
this.setClickable(true);
this.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"hello",Toast.LENGTH_SHORT).show();
}
});
this.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
v.setBackgroundColor(Color.RED);
}
});
this.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundColor(Color.WHITE);
}
});
}
}
第三步、jsx映射java组件
import { PropTypes } from 'react';
import { requireNativeComponent, View } from 'react-native';
const MCircle = requireNativeComponent('MCircle', {
propTypes: {
...View.propTypes // 包含默认的View的属性
},
});
export default MCircle;
到处这个组件,在别的页面直接引用就可以实现 自定义的这个view
第一步、定义java的包管理
/**
* Created by thinkpad on 2017/2/22.
*/
public class AnExampleReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return null;
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return null;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(new ReactViewManager());
}
}
第二步、定义java的view
public class CircleView extends TextView {
public CircleView(final Context context) {
super(context);
this.setText("asdfdsafd");
this.setFocusable(true);
this.setClickable(true);
this.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"hello",Toast.LENGTH_SHORT).show();
}
});
this.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
v.setBackgroundColor(Color.RED);
}
});
this.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundColor(Color.WHITE);
}
});
}
}
第三步、jsx映射java组件
import { PropTypes } from 'react';
import { requireNativeComponent, View } from 'react-native';
const MCircle = requireNativeComponent('MCircle', {
propTypes: {
...View.propTypes // 包含默认的View的属性
},
});
export default MCircle;
到处这个组件,在别的页面直接引用就可以实现 自定义的这个view
相关文章推荐
- react native 适配机顶盒、智能电视 遥控器解决焦点问题
- react native 适配机顶盒、智能电视 遥控器解决焦点问题
- react native 适配机顶盒、智能电视 遥控器解决焦点问题
- 解决React Native中ScrollView中控件获得焦点及点击空白处键盘消失的问题
- VS2008中qt项目智能感知失效问题的解决方法
- VS2005 无法创建或打开“智能设备”项目的一个问题的解决方法
- 智能安全实验室-杀马(Defendio) 2.5.0.426 :解决因日期超过28日(29/30/31)出现的“无效属性”导致杀马无法启动的问题;
- 我的第二个智能手机 HKC G801 严重质量问题 USB接口坏后解决办法
- 如何解决VS2005没有代码智能提示的问题
- VS2005无法创建或打开”智能设备”项目的一个问题的解决方法
- 解决VS2008打了SP1补丁后智能提示变英文的问题!!
- Maxthon浏览器添加书签时造成焦点遗失问题的解决
- 解决dotnetbar textbox控件在按Enter键后失去焦点的问题
- 【转】VS2005 无法创建或打开“智能设备”项目的一个问题的解决方法
- 机顶盒会自动跳转第一个焦点带来的问题
- 解决使用工具栏组件时控件焦点事件的问题
- 如何解决VS2005没有代码智能提示的问题
- 蚂蚁解决交通问题的智能
- 如何解决VS2005没有代码智能提示(联想)的问题(转载)
- Dell Caps Lock 切换大小写被窃取焦点问题解决办法