我会在Visual Studio中创建一个从相机拍摄照片的xamarin android项目,但是我有一个问题,我可以拍摄照片,但是在拍摄照片后我不知道如何制作该项目将照片发送到项目的可绘制文件夹中,该怎么做?
XAML代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="10">
<ImageView
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:background="#c1cdcd"
android:layout_weight="9"
android:id="@+id/imgvw1" />
<Button
android:text="Take a Photo"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnCamera" />
</LinearLayout>
MainAcivity
using Android.App;
using Android.Widget;
using Android.OS;
using Android.Content;
using Android.Provider;
using Android.Runtime;
using Android.Graphics;
using System;
namespace Droid_Camera
{
[Activity(Label = "Droid_Camera", MainLauncher = true, Icon =
"@drawable/icon")]
public class MainActivity : Activity
{
ImageView imgView1;
Button btnCamera;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
btnCamera = FindViewById<Button>(Resource.Id.btnCamera);
imgView1 = FindViewById<ImageView>(Resource.Id.imgvw1);
btnCamera.Click += BtnCamera_Click;
}
protected override void OnActivityResult(int requestCode,
[GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
Bitmap bitmap = (Bitmap)data.Extras.Get("data");
imgView1.SetImageBitmap(bitmap);
}
private void BtnCamera_Click(object sender, System.EventArgs e)
{
Intent intent = new Intent(MediaStore.ActionImageCapture);
StartActivityForResult(intent, 0);
}
}
答案 0 :(得分:0)
不幸的是, var body: some View{
List {
VStack {
Button(action: {
}, label: {
Text("Hello, World!")
}).tapAction {
print("Hello, World!")
}
Text("Something irrelevant")
}
}
}
文件夹是一个编译时资源,您无法在运行时添加到该资源中。否则,Drawables
文件将无效。
答案 1 :(得分:0)
正如评论和回答所述,您不能在运行时将文件添加到Drawable
。实际上,您无法在运行时将任何文件添加到捆绑包本身。
您可以做的是将文件添加到文件系统。如果您希望文件仅对您的应用“可见”,请使用getFilesDir()
。这将返回应用程序沙箱中存在的文件夹路径。如果它是一种临时文件并且小于1MB,请使用getCacheDir()
如果该文件是公开可见的,请使用getExternalStoragePublicDirectory()
,但为此需要WRITE_EXTERNAL_STORAGE
权限。
查看this paper了解详情