Android拍照显示

源码是从公司项目分离出来的...

转帖请贴明出处:http://blog.csdn.net/yezisuifengbiao/article/details/10431971

public static final String SDCARD_ROOT_PATH = android.os.Environment
			.getExternalStorageDirectory().getAbsolutePath();// 路径
	public static final String SAVE_PATH_IN_SDCARD = "/testcamera/"
	public static final String IMAGE_CAPTURE_NAME = "cameraTmp.png"; // 照片名称
	public final static int REQUEST_CODE_TAKE_PICTURE = 12;// 设置拍照操作的标志

其实,调用系统相机是最方便,最快捷,最简单的,简单到只需要一句话就可以解决:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

首先,要先检查SD卡是否插入:

public static boolean isHasSdcard() {
		String status = Environment.getExternalStorageState();
		if (status.equals(Environment.MEDIA_MOUNTED)) {
			return true;
		} else {
			return false;
		}
	}

给一个判断,当存储卡可用的状态下,把照片存在SD卡

	if (isHasSdcard()) {
				File vFile = new File(SDCARD_ROOT_PATH + SAVE_PATH_IN_SDCARD, IMAGE_CAPTURE_NAME);
					if (!vFile.exists()) {
						File vDirPath = vFile.getParentFile();
						vDirPath.mkdirs();
					}

					Uri uri = Uri.fromFile(vFile);
					intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

				}
	startActivityForResult(intent, REQUEST_CODE_TAKE_PICTURE);

当我们拍完照片之后,回调回来的时候,需要重写 onActivityResult

如果SD卡可用,则从存储路径下,取得图片。相反,则直接返回缩略图

当然,现在手机照出来的照片都很大,不可能显示出来的时候,满满整张大图。需要用一个算法,来等比例缩放

Bitmap bitmap;
int maxH = 200;
private void getImage(String imagePath) {
		BitmapFactory.Options options = new BitmapFactory.Options();
		options.inJustDecodeBounds = true;
		
		bitmap = BitmapFactory.decodeFile(imagePath, options); 
		
		int be = (int) (options.outHeight / (float) maxH);
		int ys = options.outHeight % maxH;
		float fe = ys / (float) maxH;
		if (fe >= 0.5)
			be = be + 1;
		if (be <= 0)
			be = 1;
		options.inSampleSize = be;

		options.inJustDecodeBounds = false;
		bitmap = BitmapFactory.decodeFile(imagePath, options);
		mimg_show.setImageBitmap(bitmap);
		mimg_show.setVisibility(View.VISIBLE);
}

点我-下载源码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在一个网格布局中显示多张图片,你可以使用 RecyclerView 来实现。以下是实现此功能的基本步骤: 1. 在你的布局文件中添加 RecyclerView 和一个网格布局管理器: ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:spanCount="3" /> ``` 在这个例子中,我们使用了 GridLayoutManager 来实现网格布局,并设置每行显示 3 张图片。 2. 创建一个 RecyclerView.Adapter 类来为 RecyclerView 提供数据: ```java public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder> { private List<Integer> mImageIds; public ImageAdapter(List<Integer> imageIds) { mImageIds = imageIds; } @NonNull @Override public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_image, parent, false); return new ImageViewHolder(view); } @Override public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) { int imageId = mImageIds.get(position); holder.imageView.setImageResource(imageId); } @Override public int getItemCount() { return mImageIds.size(); } static class ImageViewHolder extends RecyclerView.ViewHolder { ImageView imageView; public ImageViewHolder(@NonNull View itemView) { super(itemView); imageView = itemView.findViewById(R.id.image_view); } } } ``` 在这个例子中,我们使用了一个 List<Integer> 来存储图片资源的 ID。在 onCreateViewHolder 方法中,我们创建一个 ViewHolder 并返回它。在 onBindViewHolder 方法中,我们将图片资源设置到 ImageView 中。在 getItemCount 方法中,我们返回图片数量。 3. 创建一个布局文件来定义每个网格项的样式: ```xml <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/image_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" /> ``` 在这个例子中,我们只使用了一个 ImageView 来显示图片。 4. 在你的 Activity 或 Fragment 中初始化 RecyclerView 和 Adapter: ```java List<Integer> imageIds = Arrays.asList(R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4, R.drawable.image5); RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setAdapter(new ImageAdapter(imageIds)); ``` 在这个例子中,我们使用了 Arrays.asList 方法来创建一个包含图片资源 ID 的 List,并将其传递给 ImageAdapter 的构造函数。然后将 ImageAdapter 设置给 RecyclerView。 这些是实现在 Android显示多张图片(网格布局)的基本步骤。根据你的需求,你可能需要做一些调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值