2012-08-17 17 views
1

我想在Visual Studio的Monodroid应用程序中实现一个.java启动画面,无论如何我想让启动画面从资源布局中获取它的内容视图。我试图让这样的:如何从.java文件启动画面访问Monodroid资源

setContentView(Resource.layout.AppSplash); 

而且也:

setContentView(R.layout.AppSplash); 

与也试过

setContentView("@layout/AppSplash"); 

而且我得到的错误信息是这样的:

package R does not exist 

其中R更改为资源或:

cannot find symbol 
symbol : method setContentView(java.lang.String) 
location: class SwimmerTimesCalc.SplashActivity 
    setContentView("@layout/AppSplash"); 

当我尝试@布局/ AppSplash选项

我如何可以访问MonoDroid的资源来设置我的启动画面的布局?

+0

大概Xamarin团队的某人可能会对此发表评论吗? – iseeall 2013-03-08 12:15:08

回答

0

我想通了如何访问资源,因为调试器不可能进入我去生成的资源文件,它是在项目文件夹下的\ OBJ [这可能是调试或发行] \ Android上的资源\ SRC,这就是所谓R.在浏览该文件,我发现我试图用这样的布局:

public static final int appsplash1=0x7f030002; 

我把资源的价值从那里是0x7f030002,并用它这样的:

setContentView(0x7f030002); 

无论如何,随着资源文件自动生成,在此之前添加按字母顺序排列的另一个布局可能需要再次执行此步骤。

1

This应该可以帮助您开始使用。

如果您希望使用专门用于创建自己的启动画面的布局,然后使用该资源将其显示在您的活动中,那么您可以使用类似这样的东西。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/SplashScreenLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
<ImageView 
    android:id="@+id/SplashDefault" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_centerInParent="true" 
    android:scaleType="centerCrop" /> 
</RelativeLayout> 

然后在您的活动中,您可以设置内容视图。

protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     SetContentView(Resource.Layout.SplashLayout); 
    } 
+0

不是我真正想要的东西,无论如何,我想我将不得不使用单独的活动而不是.java文件制作我的splashscreen,谢谢你的时间 – 2012-08-21 18:21:39

+0

我意识到我的答案不是你问的问题,但看起来好像让它比实现一个启动画面更困难。我没有看到任何原因,为什么你不会创建一个新的,对我来说,它比找到资源的id值更加容易,并且确保每当mono重新编译时它会为你做这件事是正确的。 – Bryan 2012-08-27 19:02:55

+0

这是为了优化速度,我需要一个java启动画面,因为我正在使用monodroid,monodroid应用程序需要一段时间来启动,我也在启动时获取一些数据,所以我需要这个Java启动画面来显示用户该应用程序正在开始工作 – 2012-09-05 11:36:16

0

这里有同样的问题。人们可以通过它的名称和文件夹这样找到的资源在运行时ID:

int iconResourceId = context.getResources().getIdentifier("icon", "drawable", context.getPackageName()); 

所以,在Java文件中的一个可以用它代替R.drawable.icon这样的查找,它会工作。

然而,这样做速度较慢(因为Android上的查找实现效率低下),并且仍然会将资源名称硬编码为字符串。如果在Mono项目中移动或重命名资源,Java文件将不知道这一点。

此外,还必须以小写字母输入所有资源名称,cuz Mono将名称从.NET样式转换为“Icon.png”转换为Android样式“icon.png”。