0

我能够访问相机并拍照(使用PictureChooser插件),它将图片存储在android的图片库中,我只想将其显示在屏幕上并删除它(我不需要存储图片)我怎样才能做到这一点 ?(欢迎使用几行代码:))谢谢!

ps:也许用 mvvmcross 的 File 插件?

编辑:感谢您的回答,我认为对我来说最好的方法是进行自定义绑定以将字节 [] 绑定到普通的 ImageView,我看到了自定义绑定的示例(文本视图和按钮),我尝试制作我的。

namespace Testa.Droid.Bindings
{
    class PictureBinding : MvxBaseAndroidTargetBinding
    {
        private readonly ImageView _imageView;

        public PictureBinding(ImageView imageView)
        {
            _imageView = imageView;
        }

        public override MvxBindingMode DefaultMode
        {
            get { return MvxBindingMode.OneWay; }
        }

        public override Type TargetType
        {
            get { return typeof (byte[]); }
        }

        public override void SetValue(object value)
        {
            var memoryStream = new MemoryStream((byte[])valyue);
            Bitmap bitmap = BitmapFactory.DecodeStream(memoryStream);
            _imageView.SetImageBitmap(bitmap);
        }
    }
}

在 Setup.cs 中

protected override void FillTargetFactories(Cirrious.MvvmCross.Binding.Interfaces.Bindings.Target.Construction.IMvxTargetBindingFactoryRegistry registry)
    {
        base.FillTargetFactories(registry);

        registry.RegisterFactory(new MvxCustomBindingFactory<ImageView>("Picture", (imageView) => new PictureBinding(imageView)));
    }

在我的 ViewModel 中,我有:

 public byte[] ImageData {
    get { return _imageData; }
    set { _imageData = value; RaisePropertyChanged(() => ImageData); }
 }

现在在我看来我不知道如何使用这个自定义绑定

<ImageView
  android:id="@+id/image"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" 
  local:MvxBind="Picture ??, Mode=TwoWay" />

mvvcross vNext|monodroid

4

1 回答 1

0

使用 mvvmcross 和 mono touch 将照片上传到web 服务中涵盖了将图像上传到 web 服务

在 ImageView 中显示图像包含在Take/Select picture 中,并在 ImageView 中显示而不先保存(使用 MvvmCross)


为了找到这些命中,我使用了带有“mvvmcross”和“picture”字样的 StackOverflow 搜索框 - https://stackoverflow.com/search?q=mvvmcross+picture


更新后更新(请尽量不要这样做 - 请尝试提出新问题 - 您可以随时交叉引用它们)。

我在您的更新中稍微更改了绑定代码 - 它有字符串和流以及 byte[] - 所以我将所有内容都降低到 byte[] 级别,然后在 ViewModel 上添加了一个 byte[] 属性。

要使用绑定,您现在应该能够使用:

 <ImageView
     android:layout_width="200dp"
     android:layout_height="200dp"
     local:MvxBind="Picture ImageBytes"
     />

请注意,您不需要 TwoWay - TwoWay 用于 View 需要将更改发送到 ViewModel 时 - 例如,当用户在文本框中输入文本时。

于 2013-02-15T12:33:41.323 回答