gpt4 book ai didi

c# - 如何从 Xamarin.Forms 中的可移植类库项目调用位于 Android 项目内部的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:25 24 4
gpt4 key购买 nike

这听起来可能是个愚蠢的问题,但由于我是 Xamarin 的新手,所以我会尝试一下。

所以我有一个 Xamarin.Forms 解决方案,还有一个 Android 项目和一个可移植类库。我从 Android 项目中的 MainActivity.cs 调用起始页,它本身从可移植类库项目中定义的表单调用第一页(通过调用 App.GetMainPage())。现在,我想在我的一个表单上添加一个点击事件来获取设备的当前位置。显然,要获得位置,我必须在 Android 项目中实现它。那么如何从可移植类库项目中的单击事件调用 GetLocation 方法呢?任何帮助,将不胜感激。抱歉可能重复。

最佳答案

如果您使用 Xamarin.Forms.Labs,解决方案确实在提供的链接中。如果您只使用 Xamarin.Forms,它几乎与您使用 DependencyService 要做的事情相同。这比看起来容易。 http://developer.xamarin.com/guides/cross-platform/xamarin-forms/dependency-service/

我建议阅读这篇文章,我在这篇文章中试图理解时几乎伤透了脑筋。 http://forums.xamarin.com/discussion/comment/95717

为方便起见,这里有一个工作示例,如果您还没有完成您的工作,您可以对其进行调整:

在 Xamarin.Forms 项目中创建一个界面。

using Klaim.Interfaces;
using Xamarin.Forms;

namespace Klaim.Interfaces
{
public interface IImageResizer
{
byte[] ResizeImage (byte[] imageData, float width, float height);
}
}

在您的 Android 项目中创建服务/自定义渲染器。

using Android.App;
using Android.Graphics;
using Klaim.Interfaces;
using Klaim.Droid.Renderers;
using System;
using System.IO;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Xamarin.Forms.Dependency (typeof (ImageResizer_Android))]
namespace Klaim.Droid.Renderers
{
public class ImageResizer_Android : IImageResizer
{
public ImageResizer_Android () {}
public byte[] ResizeImage (byte[] imageData, float width, float height)
{

// Load the bitmap
Bitmap originalImage = BitmapFactory.DecodeByteArray (imageData, 0, imageData.Length);
Bitmap resizedImage = Bitmap.CreateScaledBitmap(originalImage, (int)width, (int)height, false);

using (MemoryStream ms = new MemoryStream())
{
resizedImage.Compress (Bitmap.CompressFormat.Jpeg, 100, ms);
return ms.ToArray ();
}
}
}
}

所以当你调用它时:

byte[] test = DependencyService.Get<IImageResizer>().ResizeImage(AByteArrayHereCauseFun, 400, 400);

它执行 Android 代码并将值返回到您的 Forms 项目中。

关于c# - 如何从 Xamarin.Forms 中的可移植类库项目调用位于 Android 项目内部的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27755271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com