当前位置: 首页 > news >正文

企业网站建设与管理期末考试免费主机空间

企业网站建设与管理期末考试,免费主机空间,商丘市做网站的公司,个人网站做哪一种比较赚钱一、简介 当使用了 AndroidX 后#xff0c;发现 startActivityForResult() 标记为过时了#xff0c;而是推荐我们使用 registerForActivityResult() 函数。 registerForActivityResult() 函数是 Android 中用于启动 Activity 结果回调的新方式。这个函数的目的是简化在 Act…一、简介 当使用了 AndroidX 后发现 startActivityForResult() 标记为过时了而是推荐我们使用 registerForActivityResult() 函数。 registerForActivityResult() 函数是 Android 中用于启动 Activity 结果回调的新方式。这个函数的目的是简化在 Activity 和 Fragment 之间进行启动其他 Activity 并接收结果的过程取代了传统的 startActivityForResult() 和 onActivityResult() 方法。 使用 registerForActivityResult() 函数您可以更容易地管理 Activity 结果的处理使代码更清晰和模块化。 AndroidX 介绍 AndroidX 是 Android 中的一个开发库旨在简化 Android 应用程序的开发和维护。AndroidX 提供了一组替代 Android Support Library 的库它们包括了新的功能、改进的性能和更好的兼容性以便开发人员更轻松地构建现代化、高质量的 Android 应用程序。 主要包括 新功能和改进 AndroidX 引入了许多新的功能和改进包括更好的 Jetpack 组件、性能优化、Kotlin 支持、Android 架构组件等以提高开发效率和用户体验。向后兼容性 AndroidX 专注于提供向后兼容性以确保应用程序在不同 Android 版本上能够稳定运行。这意味着即使您的应用使用了 AndroidX 库也可以在较旧的 Android 版本上运行。Jetpack 组件 AndroidX 包括了 Android Jetpack 组件这是一组库和工具旨在简化 Android 应用程序的常见开发任务例如导航、数据存储、UI 构建、生命周期管理等。Jetpack 组件的目标是提高应用程序的可维护性、稳定性和性能。 二、打开相册获取图像 1. 代码示例 public class MainActivity extends AppCompatActivity {private ActivityResultLauncherString mGalleryLauncher;Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 需要事先注册mGalleryLauncher registerForActivityResult(// 获取内容回调函数的参数将是一个URInew ActivityResultContracts.GetContent(),// 回调函数this::handleGalleryResult);}private void openGallery() {if (mGalleryLauncher ! null) {// launch的输入参数是泛型对应ActivityResultLauncherStringmGalleryLauncher.launch(image/*);}}private void handleGalleryResult(Uri imageUri) {if (imageUri ! null) {try {Bitmap selectedBitmap MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);int rotation ImageUtil.getRotation(this, imageUri);Bitmap rotatedBitmap ImageUtil.rotateBitmap(selectedBitmap, rotation);// 后续处理逻辑} catch (Exception e) {e.printStackTrace();}}} }2. ImageUtil部分函数 public static Bitmap rotateBitmap(Bitmap bitmap, int rotation) {if (rotation 0) {return bitmap;}return rotateResizeBitmap(bitmap, rotation, 1f); }public static Bitmap rotateResizeBitmap(Bitmap source, float angle, float scale) {Matrix matrix new Matrix();matrix.postRotate(angle);if (scale ! 1f) {matrix.setScale(scale, scale);}return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true); }public static int getRotation(Context context, Uri photoUri) {if (photoUri null) {return 0;}ExifInterface ei;try {InputStream inputStream context.getContentResolver().openInputStream(photoUri);ei new ExifInterface(inputStream);} catch (IOException e) {return 0;}int orientation ei.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);switch (orientation) {case ExifInterface.ORIENTATION_ROTATE_90:return 90;case ExifInterface.ORIENTATION_ROTATE_180:return 180;case ExifInterface.ORIENTATION_ROTATE_270:return 270;default:return 0;} }三、打开相机获取图像 因为使用的是系统相机应用所以也不需要额外申请相机权限了。 1. 代码示例 public class MainActivity extends AppCompatActivity {private ActivityResultLauncherIntent mCameraLauncher;Overrideprotected void onCreate(Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 需要事先注册mCameraLauncher registerForActivityResult(// 回调函数的参数将是一个ActivityResultnew ActivityResultContracts.StartActivityForResult(),// 回调函数this::handleCameraResult);}private void openCamera() {if (mCameraLauncher ! null) {// launch的输入参数是泛型对应ActivityResultLauncherIntentIntent takePictureIntent new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 确保有相机应用可用if (takePictureIntent.resolveActivity(getPackageManager()) ! null) {mCameraLauncher.launch(takePictureIntent);}}}private void handleCameraResult(ActivityResult result) {if (result.getResultCode() RESULT_OK) {Intent data result.getData();if (data ! null) {Bundle extras data.getExtras();if (extras ! null) {Uri uri data.getData();Bitmap imageBitmap (Bitmap) extras.get(data);// 后续处理逻辑}}}} }注意 由于Bundle本身能够携带的数据大小限制上面这种方式获取的相机图像分辨率通常很低。如果希望能够获取较大分辨率的图像则可以先将相机图像保存到本地再通过文件路径加载。具体方式如下 2. 修改openCamera() 在打开相机的Intent中添加一个文件输出的Uri告诉相机需要保存到指定位置。 private String mPhotoPath; // 用于存储文件保存的路径private void openCamera() {if (mCameraLauncher ! null) {// launch的输入参数是泛型对应ActivityResultLauncherIntentIntent takePictureIntent new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 确保有相机应用可用if (takePictureIntent.resolveActivity(getPackageManager()) ! null) {// 创建一个用于存储拍照结果的文件File photoFile ImageUtil.createImageFile(this);mPhotoPath photoFile.getAbsolutePath();Uri photoUri FileProvider.getUriForFile(this,com.afei.demo.provider, // 对应 AndroidManifest.xml 中的声明photoFile);takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);mCameraLauncher.launch(takePictureIntent);}} }3. ImageUtil.createImageFile() 代码 创建一个可写的文件即可。 public static File createImageFile(Context context) {String timeStamp new SimpleDateFormat(yyyyMMdd_HHmmss).format(new Date(System.currentTimeMillis()));String imageFileName JPEG_ timeStamp _;File storageDir context.getExternalFilesDir(Environment.DIRECTORY_PICTURES);if (!storageDir.exists()) {storageDir.mkdirs();}File imageFile null;try {imageFile File.createTempFile(imageFileName, /* 文件名 */.jpg, /* 文件扩展名 */storageDir /* 存储目录 */);imageFile.setWritable(true);} catch (IOException e) {e.printStackTrace();}return imageFile; }4. 自定义的FileProvider 上述代码中还使用到了一个 FileProvider.getUriForFile() 方法作为四大组件之一也是需要在 AndroidManifest.xml 文件中声明和使用的。 a. AndroidManifest.xml 文件中 application...providerandroid:nameandroidx.core.content.FileProviderandroid:authoritiescom.afei.demo.providerandroid:exportedfalseandroid:grantUriPermissionstruemeta-dataandroid:nameandroid.support.FILE_PROVIDER_PATHSandroid:resourcexml/file_paths //provider /applicationauthorities 通常可以用 包名.provider。 b. xml/file_paths 文件 在 res 文件夹下面创建一个 xml 子文件夹并新建 file_paths.xml 文件文件名可以修改和AndroidManifest.xml中对应上就行内容如下 ?xml version1.0 encodingutf-8? paths xmlns:androidhttp://schemas.android.com/apk/res/androidexternal-pathnamemy_imagespath. / /paths关于FileProvider的使用这里不过多介绍了不清楚的可以查阅其他资料。 5. 修改 handleCameraResult(ActivityResult result) 这里就不再需要通过 ActivityResult 获取数据了而是从之前存储的 mPhotoPath 中获取。 private void handleCameraResult(ActivityResult result) {if (result.getResultCode() RESULT_OK) {Bitmap bitmap BitmapFactory.decodeFile(mPhotoPath);// 后续处理逻辑} }
http://www.lebaoying.cn/news/3671.html

相关文章:

  • 陕西咸阳做网站的公司有哪些0511网站
  • 江苏国智建设有限公司网站wordpress 搭建教程 pdf
  • 关于制作网站收费标准张家港网站建设优化
  • 网站制作 符合百度网站营销应该怎么做
  • 网站哪里有古装衣服店网站建设页面
  • 网站开发国际化虚拟主机如何做多个网站
  • 网站首页倒计时功能怎么做乐清网站制作公司电话
  • 什么软件做网站最好电影网站app怎么做的
  • 网站建设学学软件工程专业后悔了
  • 天津西青区离哪个火车站近安阳哪里做网站
  • 做语文综合题的网站电子商务网站推广的主要方式
  • 公司做网站推广的价格1免费做网站
  • 南京网站seo专家我的0511镇江网
  • 淘客网站app建设做泌尿科网站价格
  • 做网站网站网络营销推广方式步骤
  • 网站开发 项目介绍百度seo关键词外包
  • 网站建设背景论文网站模板下载免费
  • 网站后台图片传不上去怎么办成品网站 源码1688
  • pc门户网站是什么意思优改网logo设计
  • 品牌做网站wordpress 模板 排名
  • 烟台模板建站代理国外那些网站是做菠菜的
  • 网站建设的用途是什么意思西安网站设计与建设
  • 中国最新军事新闻最新消息视频外贸网站谷歌优化
  • 网站开发毕业答辩河源网站页面优化ppt
  • 咖啡网站建设市场分析网页制作与网站设计代码
  • 湖北省住建厅网站官网外贸推广具体是做什么
  • mssql网站开发百度推广开户电话
  • 苏州营销型网站建设方案做酒吧设计的网站
  • 什么行业应该做网站做ppt好的模板下载网站有哪些内容
  • 国外app设计网站网站建设与推广 范文