net做公司网站国外设计师

news/2025/9/24 4:06:59/文章来源:
net做公司网站,国外设计师,保定网站seo,优秀简洁网站设计ReactNative绑定优酷SDK需要用到两部分知识#xff1a; 优酷本身的sdk绑定#xff1b;RN与原生界面的交互#xff1b; 效果#xff1a; RN版本#xff1a;0.49.3 代码更新日期#xff1a;2017.10.26 下文也根据绑定需要分为两部分#xff1a; 一、优酷sdk绑定#…ReactNative绑定优酷SDK需要用到两部分知识 优酷本身的sdk绑定RN与原生界面的交互 效果 RN版本0.49.3 代码更新日期2017.10.26 下文也根据绑定需要分为两部分 一、优酷sdk绑定  二、RN与原生页面的交互 一、优酷SDK绑定 1.优酷云平台创建应用获取到client_id和client_secret 申请地址http://cloud.youku.com/app 如图 2.引入sdk 在目录app/libs加入优酷sdkmma_sdk.jar、utdid4all-1.1.5.5.jar、YoukuPlayerOpenSDK-release.aarsdk下载地址http://cloud.youku.com/down/play 在目录app/build.gradle里面添加下面两段配置 android { // ... 之前本身配置下面为添加的配置 //添加libs目录配置 repositories { flatDir { dirs libs } } sourceSets { main { jniLibs.srcDirs [libs]; } } } dependencies { // ... 之前本身配置下面为添加的配置 //公共库 compile com.alibaba:fastjson:1.1.56.android compile com.nostra13.universalimageloader:universal-image-loader:1.9.5 //sdk compile(name: YoukuPlayerOpenSDK-release, ext: aar) } 3.在MainApplication.java初始化优酷播放代码 import com.youku.cloud.player.YoukuPlayerConfig; //请在这里输入你的应用的clientIdclientSecret public static final String CLIENT_ID_WITH_AD e7e4d0ee1591b0bf; public static final String CLIENT_SECRET_WITH_AD 1fbf633f8a55fa1bfabf95729d8e259a; Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); YoukuPlayerConfig.setClientIdAndSecret(CLIENT_ID_WITH_AD,CLIENT_SECRET_WITH_AD); YoukuPlayerConfig.onInitial(this); YoukuPlayerConfig.setLog(false); } 4.新建Activity和后置类 页面代码 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto xmlns:toolshttp://schemas.android.com/tools android:layout_widthmatch_parent android:layout_heightmatch_parent tools:contextcom.gangguwang.yewugo.YKPlayerActivity android:orientationvertical com.youku.cloud.player.YoukuPlayerView android:idid/baseview android:layout_widthfill_parent android:layout_heightwrap_content android:layout_alignParentToptrue /com.youku.cloud.player.YoukuPlayerView /LinearLayout 后置类代码 package com.gangguwang.yewugo; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.Toast; import android.text.TextUtils; import com.youku.cloud.player.YoukuPlayerConfig; import com.youku.cloud.player.YoukuPlayerView; import com.youku.cloud.utils.Logger; import com.youku.cloud.module.PlayerErrorInfo; import com.youku.cloud.player.PlayerListener; import com.youku.cloud.player.VideoDefinition; import com.youku.cloud.utils.ValidateUtil; import com.youku.download.DownInfo; public class NativeActivity extends AppCompatActivity { private YoukuPlayerView youkuPlayerView; private String vidXMzA1NzYwMTQxNg; private String password; private boolean local false; Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_native); // Intent mIntentgetIntent(); // if(mIntent!null) { // Toast.makeText(this,请求参数mIntent.getStringExtra(params),Toast.LENGTH_SHORT).show();; // } // Button btn_two(Button)this.findViewById(R.id.btn_two); // //btn_two.setVisibility(View.GONE); //隐藏按钮 // btn_two.setOnClickListener(new View.OnClickListener() { // Override // public void onClick(View v) { // Intent mIntentnew Intent(NativeActivity.this,MainActivity.class); // mIntent.putExtra(data,你是123...); // NativeActivity.this.startActivity(mIntent); // NativeActivity.this.finish(); // } // }); youkuPlayerView (YoukuPlayerView)findViewById(R.id.baseview); // 初始化播放器 youkuPlayerView.attachActivity(this); youkuPlayerView.setPreferVideoDefinition(VideoDefinition.VIDEO_HD); youkuPlayerView.setPlayerListener(new MyPlayerListener()); youkuPlayerView.setShowFullBtn(true); autoplayvideo(); } private void autoplayvideo() { if (local) { youkuPlayerView.playLocalVideo(vid); } else { if (TextUtils.isEmpty(password)) { youkuPlayerView.playYoukuVideo(vid); } else { youkuPlayerView.playYoukuPrivateVideo(vid, password); } } } Override protected void onPause() { super.onPause(); // 必须重写的onPause() youkuPlayerView.onPause(); } Override protected void onResume() { super.onResume(); // 必须重写的onResume() youkuPlayerView.onResume(); } Override protected void onDestroy() { super.onDestroy(); // 必须重写的onDestroy() youkuPlayerView.onDestroy(); } // 添加播放器的监听器 private class MyPlayerListener extends PlayerListener { Override public void onComplete() { // TODO Auto-generated method stub super.onComplete(); } Override public void onError(int code, PlayerErrorInfo info) { // TODO Auto-generated method stub //txt1.setText(info.getDesc()); } Override public void OnCurrentPositionChanged(int msec) { // TODO Auto-generated method stub super.OnCurrentPositionChanged(msec); } Override public void onVideoNeedPassword(int code) { // TODO Auto-generated method stub super.onVideoNeedPassword(code); } Override public void onVideoSizeChanged(int width, int height) { // TODO Auto-generated method stub super.onVideoSizeChanged(width, height); } } } 5.配置AndroidManifest.xml 5.1给你的播放器Activity加上监听屏幕旋转的语句 activity android:name.NativeActivity android:configChangesorientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode android:exportedtrue android:launchModesingleTask / 5.2添加权限 uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / uses-permission android:nameandroid.permission.INTERNET / uses-permission android:nameandroid.permission.READ_PHONE_STATE / uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / uses-permission android:nameandroid.permission.READ_EXTERNAL_STORAGE / uses-permission android:nameandroid.permission.WAKE_LOCK / uses-permission android:namecom.android.launcher.permission.READ_SETTINGS / uses-permission android:nameandroid.permission.SYSTEM_ALERT_WINDOW / uses-permission android:nameandroid.permission.CHANGE_WIFI_MULTICAST_STATE / uses-permission android:nameandroid.permission.INTERACT_ACROSS_USERS_FULL / 到此优酷播放的sdk已经配置完毕。 二、RN与原生页面的互交 使用NativeModules模块互交本章分为 1.RN调用 2.创建中间交互类IntentModule.java、IntentReactPackage.java; 3.使用反射和Intent进行通知原生界面 1.RN调用代码 Button onPress{() { NativeModules.IntentModule.startActivityFromJS(你的包名.NativeActivity, 参数); }} title 播 放 color#841584 / 2.创建中间交互类 a).注册原生模块类 IntentReactPackage.java 代码如下 package com.gangguwang.yewugo; import com.facebook.react.ReactPackage; import com.facebook.react.bridge.JavaScriptModule; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; import java.util.Arrays; import java.util.Collections; import java.util.List; public class IntentReactPackage implements ReactPackage { Override public ListNativeModule createNativeModules(ReactApplicationContext reactContext) { return Arrays.NativeModuleasList( new IntentModule(reactContext) ); } // Override // public ListClass? extends JavaScriptModule createJSModules() { // return Collections.emptyList(); // } Override public ListViewManager createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } } 代码解读固定的api固定的方法必须重写createNativeModules和createViewManagers方法只是把另一个交互类IntentModule注册到createNativeModules里面。 b).创建你的RN交互暴露方法类 IntentModule.java代码如下 package com.gangguwang.yewugo; import android.app.Activity; import android.content.Intent; import android.text.TextUtils; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; public class IntentModule extends ReactContextBaseJavaModule { public IntentModule(ReactApplicationContext reactContext) { super(reactContext); } Override public String getName() { return IntentModule; } /** * Activtiy跳转到JS页面传输数据 * param successBack * param errorBack */ ReactMethod public void dataToJS(Callback successBack, Callback errorBack){ try{ Activity currentActivity getCurrentActivity(); String result currentActivity.getIntent().getStringExtra(data); if (TextUtils.isEmpty(result)){ result 没有数据; } successBack.invoke(result); }catch (Exception e){ errorBack.invoke(e.getMessage()); } } /** * 从JS页面跳转到原生activity 同时也可以从JS传递相关数据到原生 * param className * param params */ ReactMethod public void startActivityFromJS(String className, String params){ try{ Activity currentActivity getCurrentActivity(); if(null!currentActivity){ Class toActivity Class.forName(className); Intent intent new Intent(currentActivity,toActivity); //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(params, params); currentActivity.startActivity(intent); } }catch(Exception e){ throw new JSApplicationIllegalArgumentException(不能打开Activity : e.getMessage()); } } /** * 从JS页面跳转到Activity界面并且等待从Activity返回的数据给JS * param className * param params * param requestCode * param successBack * param errorBack */ ReactMethod public void startActivityFromJSGetResult(String className, String params, int requestCode, Callback successBack, Callback errorBack){ try { Activity currentActivity getCurrentActivity(); if(currentActivity ! null) { Class toActivity Class.forName(className); Intent intent new Intent(currentActivity,toActivity); //intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra(params, params); currentActivity.startActivityForResult(intent,requestCode); // //进行回调数据 // successBack.invoke(MainActivity.mQueue.take()); } } catch (Exception e) { errorBack.invoke(e.getMessage()); e.printStackTrace(); } } // /** // * 必须添加反射注解不然会报错 // * 这个方法就是ReactNative将要调用的方法会通过此类名字调用 // * param msg // */ // ReactMethod // public void callNativeMethod(String msg) { // Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); // //startActivityForResult(myIntent, 1); // } } c).在MainApplication.java里面设置交互类IntentReactPackage Override protected ListReactPackage getPackages() { return Arrays.ReactPackageasList( new MainReactPackage(), new IntentReactPackage() ); } 3.使用反射和Intent进行通知原生界面 在IntentModule已经体现了核心代码 Activity currentActivity getCurrentActivity(); if(null!currentActivity){ Class toActivity Class.forName(className); Intent intent new Intent(currentActivity,toActivity); intent.putExtra(params, params); currentActivity.startActivity(intent); } 到此为止已经全部大功告成源码地址https://github.com/vipstone/react-native-youku

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/914797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司网站 仿站什么意思wordpress注册logo

前言 Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。 Pod 控制器由 master 的 kube-controller-manager 组件提供,常见的此类控制器有 Replication Controller、ReplicaSet、Deploym…

如何给网站添加cnzz站长统计功能代码的常用办法想做网站建设

开源软件技术社区是一个由开发者、贡献者、用户和维护者组成的共享平台,主要目的是打造技术、软件产品良性互动、开源技术安全可控的软件生态环境,实现可复用应用或服务的快速部署与使用、完成资源与能力的高度共享、促进社区成员的共建共赢,…

公司宣传片视频制作南昌优化网站服务

一、完成VMware Tools安装 双击 VMwareTool 打开 Ubuntu 终端快捷键 AltControlT 切换汉语的快捷键是Alt空格 ls 打印出当前所在目录中所有文件和文件夹 cd 桌面 进入桌面文件夹 sudo ./vmware-install.pl 安装tool,输入之前设置的密码。 地址默认,按…

昆明凡科建站多少钱南昌做网站的公司哪里好

概述 对于刚入门的同学来说,往往都会对Handler比较迷茫,到底Handler是个什么样的东西。当然,可能对于一些有工作经验的工程师来说,他们也不一定能很准确地描述,我们来看下API的介绍。 Handler是用来结合线程的消息队列…

网站开发设计流程论文移动端首页

本文主要包括以下内容 volly基本操作(String与Json类型) volly图片操作 自定义volly volly源码分析 Volley简单易用,在性能方面也进行了大幅度的调整,它的设计目标就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大…

html5建一个网站做信息图网站

过几天就要回家了,剩下的工作还有一点没有完成.不过已经是无关大碍了.突然有种很烦的感觉.想想这个暑假的时间里面自己也算是经历不少了,可是回忆一下自己到底收获了什么,脑子里面却是一片空白,什么都想不到.本来是要动笔写篇"我的深圳之行"之类的东西的,可是却没有一…

开发网站内外外贸购物网站建设

当你在网上注册新账户时,平台如何为你生成一个独特的用户名或编号呢?这背后其实有一套精心设计的系统。本文将带你了解一种使用 Erlang 语言开发的随机账户分配系统,它既快速又可靠。 ## 随机分配的简单步骤 我们可以将这个过程想象成一个装…

运城环保局网站王建设广州百度推广开户

分类目录:《自然语言处理从入门到应用》总目录 使用SQLite存储的实体记忆 我们将创建一个简单的对话链,该链使用ConversationEntityMemory,并使用SqliteEntityStore作为后端存储。使用EntitySqliteStore作为记忆entity_store属性上的参数&am…

兼职做一篇微信的网站百度h5下载

在人工智能和机器学习领域,"检测"、"识别"和"分类"是常用的术语,它们在问题解决中有着不同的含义: 检测(Detection):检测是指在图像或视频中定位和识别特定目标的过程。目标…

珠海网站建设方案外包wordpress不能注册

1.选题背景 婚礼是人生中的重要时刻,而试妆是婚礼准备过程中不可或缺的一环。传统的婚纱店试妆预约方式通常需要亲自到店或通过电话预约,这样的方式可能存在一些问题。首先,用户需要花费时间和精力到店进行预约,对于忙碌的现代人…

小广告推广网站房地产新闻报道

office word 使用笔记 1. 功能1.1 格式快捷键1.2 复选框 2 遇到过的问题2.1 表格标题和表格距离过大 1. 功能 1.1 格式快捷键 复制格式:ctrl shift c 粘贴格式:ctrl shift v 1.2 复选框 方框位置和类型:“插入——高级符号——字体”选…

做网站点子wordpress中英文模板

Java解决动态口令问题 01 题目 某公司门禁密码使用动态口令技术。初始密码为字符串 password,密码更新均遵循以下步骤: 设定一个正整数目标值 target将 password 前 target 个字符按原顺序移动至字符串末尾 请返回更新后的密码字符串。 示例 1&…

杭州设计企业网站高端公司wordpress 标签别名 id

项目编号: S 042 ,文末获取源码。 \color{red}{项目编号:S042,文末获取源码。} 项目编号:S042,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5…

音乐网站开发结语vs和php哪个做网站好

awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 awk处理过程: 依次对每一行进行处理,然后输出 awk命令形式: awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’…

吉林省白山市建设厅网站首页网址大全目录查询

新增后台清理缓存功能 修复定位权限 修复无法删除手机端管理员 11月新登录接口修复! 修复商家付款到零钱, 修复会员登陆不显示头像, 修复无法修改会员开添加绑定

济宁华园建设有限公司网站河北 石家庄 网站建设

关注参数(1)容量和误差 实际电容量和标称电容量允许的最大偏差范围。在选型上注意精度等级,用字母表示:D—0.5%、F—1%、G—2%、J—5%、K—10%、M—20% (2)额定工作电压 电容器在电路中能够长期稳定、可靠工…

做船公司网站燕赵邯郸网站建设

在 React Native (RN) 中,Button 组件确实没有直接的 style 属性,这与一些其他的 React Native 组件(如 View 或 Text)有所不同。React Native 的 Button 组件是一个较为高级的封装,它提供了一些基本的样式和行为&…

怎么建设一个漫画网站app开发软件要多少钱

如何计算一张图片的占用内存大小? 注意是占用内存,不是文件大小可以运行时获取重要的是能直接掌握计算方法基础知识 Android 屏幕像素密度分类: (其实还有一种 ldpi = 120,不过这个已经绝种了,所以最低的只需关心mdpi即可) 上表中的比例为:m : h : xh : xxh: xxxh = …

做网站费用需要分摊吗wordpress密码原理

问题描述:给定n个作业的集合{J1,J2,…,Jn}。每个作业必须先由机器1处理,然后由机器2处理。作业Ji需要机器j的处理时间为tji。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。所有作业在机器2上完成处理的时间和称为该作业调度…

重庆网站建设仿站网页升级紧急通知狼急通知

前言 对于网站和Web APP来说,相同的类型的产品,响应速度越好,那么用户量就越高。不可否认的是,响应速度是用户黏粘性最好的方式之一,但往往不知道如何下手解决,希望这篇文章可以给予你一些思路 对于网站和…