Mor*_*rti 8 camera android android-camera
我一直在研究相机应用程序,一切都在拍摄和保存图片.但是我希望在拍摄照片时将照片保存在实际照片中时显示我的Imageview.那可能吗?
现在我一直在尝试将imageView放在与绘制相机预览相同的布局中.
<FrameLayout
android:id="@+id/camera_preview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
>
<ImageView
android:layout_width="50pt"
android:layout_height="50pt"
android:layout_gravity="center"
android:src="@android:drawable/star_big_on"
/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
我想也许如果它是在与相机相同的视图上绘制的话那么它也会与图片一起看到该图像.
有谁知道这是可能的还是我必须采取另一种方法?如果是这样,那么如何做到这一点的其他解决方案的链接将不胜感激:)
谢谢!
编辑:我一直在关注这个相机教程http://developer.android.com/guide/topics/media/camera.html#manifest 如果有人想知道我如何保存图片等
编辑2:为了澄清,我希望你拍摄后,这个例子中的星星会在拍摄的照片中显示出来.因此,如果我拍摄一张墙的照片,我希望当你看到画廊中的照片时,就会在拍摄照片的同时在墙上展示星星!
你究竟想要的是一个LayerDrawable -
一个Drawable,管理其他Drawables数组.这些是按数组顺序绘制的,因此具有最大索引的元素将绘制在顶部.
您有两种选择LayerDrawable.您可以在单独的可绘制xml中定义它,然后只需在您的图像中设置图像ImageView,或者您可以LayerDrawable在代码中动态配置它.但是,如果您希望动态发生这种情况,则需要采用下面提到的编程方法.
以编程方式使用代码
你需要将你的Bitmap(你必须在捕获图片后获得)转换为Drawable.For用于这样的用途BitmapDrawable:
Resources r = getResources();
Drawable d = new BitmapDrawable(r,yourBitmap);//converting bitmap to drawable
Drawable[] layers = new Drawable[2];
layers[0] = d;
layers[1] = r.getDrawable(R.drawable.star_big_on);
LayerDrawable layerDrawable = new LayerDrawable(layers);
imageView.setImageDrawable(layerDrawable);
Run Code Online (Sandbox Code Playgroud)
现在,您可以在ImageView其上设置两个图像(1.您的捕获图像和2.star_big_on).
编辑
如您所希望将新创建的图像(添加了2个图像)存储在图库中,您可以执行以下操作来存储图像:
int width = layerDrawable.getIntrinsicWidth();
int height = layerDrawable.getIntrinsicHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
layerDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
layerDrawable.draw(canvas);
//and then the following line will store it in the gallery
MediaStore.Images.Media.insertImage(getContentResolver(), bitmap , "yourTitle" , "yourDescription");
Run Code Online (Sandbox Code Playgroud)
现在,通过上面的操作,您的图像将被添加到图库的末尾.如果您希望将其存储在图库的开头,请参阅此代码.
如果你想要在你点击一张照片之后存储在画廊中的原始图像,要从画廊中删除,你可以参考这个问题.在这个问题你会看到类似的东西file.getPath(),这只是路径要删除所需的图像.如果你想获得捕获图像的路径,请参考这个问题.现在,你可以随心所欲地实现你想要的东西.
注意:如果您想知道如何LayerDrawable通过XML 使用
使用XML
创建一个新的Drawable XML文件,我们称之为mylayer.xml:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/yourcapturedimage" />
<item android:drawable="@drawable/star_big_on" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
现在在您Activity设置图像时使用Drawable:
imageView.setImageDrawable(getResources().getDrawable(R.layout.mylayer));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2949 次 |
| 最近记录: |