转载

Xamarin改写安卓Residemenu控件

1.下载最新的Residemenu安卓代码。用intellig打开,重新编译一下。

Xamarin改写安卓Residemenu控件

2.需要将其中的Residemenu,用gradle编译生成*.aar文件格式。

2.1 下载gradle,配置环境变量,包括java、androrid_home、gradle环境变量。

GRADLE_HOME   C:/gradle-2.7-bin/gradle-2.7

ANDROID_HOME C:/Users/Administrator/AppData/Local/Android/android-sdk

Path  %GRADLE_HOME%/bin;%ANDROID_HOME%/tools;%ANDROID_HOME%/platform-tools;

2.2 在Residemenu项目文件中有,也有了build.gradle文件。在命令行中,转到Residemenu目录下,执行gradle build命令,就可以在ResideMenu/build/outputs/aar下,产生两个对应的aar文件。

Xamarin改写安卓Residemenu控件 Xamarin改写安卓Residemenu控件 Xamarin改写安卓Residemenu控件

3.将aar文件放到xamarin jar binding项目中,并且要设置生成操作为LibraryProjectZip。其中,Residemenu应用了nineoldandroids-library-2.4.0.jar,所以在binding项目中,会有一些错误。需要在Metadata.xml中,将错误排除。以后在binding安卓项目时,对错误的都先可以采用排除的方式,否则要进行调试修改很费时间。

Xamarin改写安卓Residemenu控件

修改metadata.xml,将错误的都先移除掉

<metadata>

<remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='AnimatorSet']/method[@name='setDuration' and count(parameter)=1 and parameter[1][@type='long']]" />

<remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='ValueAnimator']/method[@name='setDuration' and count(parameter)=1 and parameter[1][@type='long']]" />   <remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='AnimatorSet']" />   <remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='ValueAnimator']" />

<remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='PropertyValuesHolder.FloatPropertyValuesHolder']/constructor[@name='PropertyValuesHolder.FloatPropertyValuesHolder' and count(parameter)=2 and parameter[1][@type='java.lang.String'] and parameter[2][@type='com.nineoldandroids.animation.FloatKeyframeSet']]"/>

<remove-node  path="/api/package[@name='com.nineoldandroids.animation']/class[@name='PropertyValuesHolder.IntPropertyValuesHolder']/constructor[@name='PropertyValuesHolder.IntPropertyValuesHolder' and count(parameter)=2 and parameter[1][@type='java.lang.String'] and parameter[2][@type='com.nineoldandroids.animation.IntKeyframeSet']]" />   <remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='PropertyValuesHolder.IntPropertyValuesHolder']/constructor[@name='PropertyValuesHolder.IntPropertyValuesHolder' and count(parameter)=2 and parameter[1][@type='com.nineoldandroids.util.Property'] and parameter[2][@type='com.nineoldandroids.animation.IntKeyframeSet']]" />

<remove-node path="/api/package[@name='com.nineoldandroids.animation']/class[@name='PropertyValuesHolder.FloatPropertyValuesHolder']/constructor[@name='PropertyValuesHolder.FloatPropertyValuesHolder' and count(parameter)=2 and parameter[1][@type='com.nineoldandroids.util.Property'] and parameter[2][@type='com.nineoldandroids.animation.FloatKeyframeSet']]" />

</metadata>

这样就可以编译成功了。

4.在Xamarin项目中就可以引用binding后的dll使用了。

Xamarin改写安卓Residemenu控件

正文到此结束
Loading...