MobileFirst 中的浮动原生视图

Posted

技术标签:

【中文标题】MobileFirst 中的浮动原生视图【英文标题】:Floating native view in MobileFirst 【发布时间】:2016-01-12 12:09:50 【问题描述】:

我想在我的 mobilefirst 混合页面上放置一个 android 原生视频视图

我查看了下面的这个链接,这对在混合 html 页面上方放置原生视图没有帮助。 (有创建原生活动的示例,但这里不是这样)

https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-0/adding-native-functionality/

我找到了一种解决方法及其工作,但我想要一个适当的解决方案

public void onInitWebFrameworkComplete(WLInitWebFrameworkResult result)
		if (result.getStatusCode() == WLInitWebFrameworkResult.SUCCESS) 
			super.loadUrl(WL.getInstance().getMainHtmlFilePath());
			
			video1 = new VideoView(this);

			
			RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(300,300); //The WRAP_CONTENT parameters can be replaced by an absolute width and height or the FILL_PARENT option)
			params.leftMargin = 100; //Your X coordinate
			params.topMargin = 100; //Your Y coordinate
			
			super.addContentView(video1, params);
			
			video1.setVisibility(View.GONE);
			
			
		 else 
			handleWebFrameworkInitFailure(result);
		
	

	private void handleWebFrameworkInitFailure(WLInitWebFrameworkResult result)
		AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
		alertDialogBuilder.setNegativeButton(R.string.close, new OnClickListener() 
			@Override
			public void onClick(DialogInterface dialog, int which)
				finish();
			
		);

		alertDialogBuilder.setTitle(R.string.error);
		alertDialogBuilder.setMessage(result.getMessage());
		alertDialogBuilder.setCancelable(false).create().show();
	
	
	@Override
	public void onActionReceived(String action, JSONObject data) 
 		Log.d("TEST","********AM NATIVE**********");
 		if (action.equals("start_video"))
		
			Log.d("TEST","********starting Video**********");
					
			
			getActivity().runOnUiThread(new Runnable() 
				
							public void run() 
							

								video1.setVisibility(View.VISIBLE);							
								Uri uri=Uri.parse("/sdcard/a.mp4");        
							    video1.setVideoURI(uri);   
							    video1.start();
							    Log.d("TEST","Inside Thread");
							    					   
							    
							
							
				);

				
		 else if (action.equals("stop_video"))
			
			Log.d("TEST","********Stop Video**********");
			video1.stopPlayback();
			video1.setVisibility(View.GONE);
					
		
 		
	

【问题讨论】:

是什么让您认为这是一种解决方法而不是正确的解决方案?这不是 mobilefirst应该给你的东西;如果你让它工作,那很好。你有解决方案。 我想知道是否有 WL.NativePage.show 之类的功能或仅显示视图的功能。 您可以在 MobileFirst 平台知识中心查看 SendAction API。 【参考方案1】:

是什么让您认为这是一种变通方法而不是正确的解决方案?这不是mobilefirst应该给你的东西;如果你让它工作,那很好。你有办法。

也就是说,你还是应该看看这些教程:

https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/advanced-topics/integrating-server-generated-pages-hybrid-applications/ https://developer.ibm.com/mobilefirstplatform/documentation/getting-started-7-1/foundation/adding-native-functionality/android-adding-native-ui-elements-hybrid-applications/

【讨论】:

在我的代码中创建视图 onInitWebFrameworkComplete() 并使用 video1.setVisibility(View.GONE);然后在需要时显示本机视图(从 js 调用本机)。因此视图在应用程序启动时加载。因此它可能会影响应用程序性能。

以上是关于MobileFirst 中的浮动原生视图的主要内容,如果未能解决你的问题,请参考以下文章

如何编辑添加到情节提要中的场景停靠点的浮动视图?

Android中的浮动视频视图

如何让可滚动集合视图中的浮动标题视图保持其 Y 位置?

材料设计中的Android EditText视图浮动提示

如何为 FrameLayout 中的多个视图制作浮动上下文菜单?

可以拖动到视图控制器中的任何位置的浮动按钮?