热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android画面缩放到右上角,android–如何缩放裁剪图像并在imageview上...

我正在制作Android应用程序,其中我有一个场景,我从库中选择一个图像,裁剪它并在imageview上显示它.现在在裁剪时我也希望缩放该图像.我正在使用TouchImageVie

我正在制作Android应用程序,其中我有一个场景,我从库中选择一个图像,裁剪它并在imageview上显示它.现在在裁剪时我也希望缩放该图像.我正在使用TouchImageView类来缩放图像.

请注意,如果我只想在ImageView上应用TouchImageView,它可以正常工作.但是当我将它用于裁剪功能时它不起作用.

我应该如何在ImageView上一次应用裁剪缩放功能?

任何类型的帮助将不胜感激.以下是我的尝试.

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

System.out.println(requestCode);

if (resultCode != RESULT_OK) {

return;

}

Bitmap bitmap;

switch (requestCode) {

case 0:

mImageCaptureUri = data.getData();

doCrop();

break;

case 1:

mImageCaptureUri = data.getData();

doCrop();

break;

case 2:

Bundle extras = data.getExtras();

/**

* After cropping the image, get the bitmap of the cropped image and

* display it on imageview.

*/

if (extras != null) {

Bitmap photo = extras.getParcelable("data");

img_v.setImageBitmap(photo);

//myBitmap = getCircleImage(photo);

//String image_base64 = postimage();

// new PostCoverTask().execute(userid, image_base64);

}

File f = new File(mImageCaptureUri.getPath());

/**

* Delete the temporary image

*/

if (f.exists())

f.delete();

break;

}

super.onActivityResult(requestCode, resultCode, data);

}

private void doCrop()

{

final ArrayList cropOptions = new ArrayList();

/**

* Open image crop app by starting an intent

* ‘com.android.camera.action.CROP‘.

*/

Intent intent = new Intent("com.android.camera.action.CROP");

intent.setDataAndType(mImageCaptureUri,"image/*");

/**

* Check if there is image cropper app installed.

*/

List list = getPackageManager().queryIntentActivities(

intent, 0);

int size = list.size();

/**

* If there is no image cropper app, display warning message

*/

if (size == 0)

{

Toast.makeText(this, "Can not find image crop app",

Toast.LENGTH_SHORT).show();

return;

}

else

{

size=1;

/**

* Specify the image path, crop dimension and scale

*/

// intent.setData(mImageCaptureUri);

intent.putExtra("crop", "true");

intent.putExtra("outputX", 256);

intent.putExtra("outputY", 256);

intent.putExtra("aspectX",3);

intent.putExtra("aspectY", 1);

intent.putExtra("scale", true);

intent.putExtra("scaleUpIfNeeded", true);

intent.putExtra("return-data", true);

System.out.println("Put image in Extra");

/**

* There is posibility when more than one image cropper app exist,

* so we have to check for it first. If there is only one app, open

* then app.

*/

if (size == 1) {

Intent i = new Intent(intent);

ResolveInfo res=null ;

for (int i1=0;i1

{

if(list.get(i1)!=null)

{

res = list.get(i1);

break;

}

}

i.setComponent(new ComponentName(res.activityInfo.packageName,

res.activityInfo.name));

System.out.println("size is equal to "+size);

startActivityForResult(i, 2);

}

else

{

System.out.println("size is equal to "+size);

/**

* If there are several app exist, create a custom chooser to

* let user selects the app.

*/

for (ResolveInfo res : list)

{

final CropOption co = new CropOption();

co.title = getPackageManager().getApplicationLabel(

res.activityInfo.applicationInfo);

co.icon = getPackageManager().getApplicationIcon(

res.activityInfo.applicationInfo);

co.appIntent = new Intent(intent);

co.appIntent

.setComponent(new ComponentName(

res.activityInfo.packageName,

res.activityInfo.name));

cropOptions.add(co);

}

CropOptionAdapter adapter = new CropOptionAdapter(

getApplicationContext(), cropOptions);

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Choose Crop App");

builder.setAdapter(adapter,

new DialogInterface.OnClickListener()

{

public void onClick(DialogInterface dialog, int item) {

System.out.println("option "+cropOptions.get(item));

//startActivityForResult(cropOptions.get(item).appIntent,

// CROP_FROM_CAMERA);

System.out.println("builder.setAdapter");

}

});

builder.setOnCancelListener(new DialogInterface.OnCancelListener() {

@Override

public void onCancel(DialogInterface dialog) {

if (mImageCaptureUri != null) {

getContentResolver().delete(mImageCaptureUri, null,

null);

mImageCaptureUri = null;

}

System.out.println("Click on cancel");

}

});

AlertDialog alert = builder.create();

alert.show();

System.out.println("alert");

}

}

}



推荐阅读
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • NOIP2000的单词接龙问题与常见的成语接龙游戏有异曲同工之妙。题目要求在给定的一组单词中,从指定的起始字母开始,构建最长的“单词链”。每个单词在链中最多可出现两次。本文将详细解析该题目的解法,并分享学习过程中的心得体会。 ... [详细]
  • 在Android开发中,实现多点触控功能需要使用`OnTouchListener`监听器来捕获触摸事件,并在`onTouch`方法中进行详细的事件处理。为了优化多点触控的交互体验,开发者可以通过识别不同的触摸手势(如缩放、旋转等)并进行相应的逻辑处理。此外,还可以结合`MotionEvent`类提供的方法,如`getPointerCount()`和`getPointerId()`,来精确控制每个触点的行为,从而提升用户操作的流畅性和响应性。 ... [详细]
  • 掌握Android UI设计:利用ZoomControls实现图片缩放功能
    本文介绍了如何在Android应用中通过使用ZoomControls组件来实现图片的缩放功能。ZoomControls提供了一种简单且直观的方式,让用户可以通过点击放大和缩小按钮来调整图片的显示大小。文章详细讲解了ZoomControls的基本用法、布局设置以及与ImageView的结合使用方法,适合初学者快速掌握Android UI设计中的这一重要功能。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • javax.mail.search.BodyTerm.matchPart()方法的使用及代码示例 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Tornado框架中模块与静态文件的应用
    本文详细介绍了Tornado框架中模块和静态文件的使用方法。首先明确模块与模板的区别,然后通过具体的代码示例展示如何在HTML文档中使用模块,并配置模块的路由。最后,提供了模块类中参数获取的示例。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
author-avatar
维生素-熙
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有