当前位置: 首页 > 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://wiki.neutronadmin.com/news/171808/

相关文章:

  • 如何制作百度网站地图网站开发最新架构
  • 厦门做网站哪家公司好手机上能安装微信网页版
  • 网站功能模块清单网站建设后台管理登陆代码
  • 公司网站建设计入科目旅游网站作用
  • 网站备案流程以及所需资料织梦网站导航如何删除
  • html国外网站源码网站实时推送怎么做
  • 最新设计网站大全wordpress与微信公众号互通
  • 休闲食品网站建设百度指数关键词未收录怎么办
  • 二级域名可以做淘客网站做网站需要什么营业执照
  • 临夏金属装饰网站建设了解网站建设的基本流程
  • 建设企业网站的青岛做网站好的公司
  • 徐州手机网站制作公司哪家好腾讯cdn WordPress
  • 2018年网站开发语言排行海南网站建设中心
  • 环保网站策划书tk域名注册网站
  • 网站加速 wordpresswordpress 图片显示插件
  • html 如何嵌入网站页面重庆装修协会
  • 建设网站怎样通过流量赚钱射阳网页设计
  • 崔凯 本地wordpress东莞seo整站优化
  • 那些做面点的网站好电商平台运营公司
  • 网站做cpa赚钱吗昆山建设投标网站
  • 济南做网站互联网公司有哪些开个小门面装修找谁
  • 网站制度建设模板辽宁建设科技信息网网站
  • 网站建设手机端pc端分开成品1688网站
  • 厦门长实建设有限公司网站免费域名注册方式
  • 模板建站广团wordpress如何显示文章列表
  • 如何建立微信公众号怎么申请上海关键词优化排名哪家好
  • 廊坊企业自助建站网站毕业作品代做
  • 大连模板建站定制网站提供模板网站制作多少钱
  • 广州花都网页设计google企业网站seo
  • 无锡网站制作网站用wordpress做微站