- 浏览: 185382 次
- 性别:
- 来自: 浙江
文章分类
最新评论
安卓有自带的截图方法,Activity如下:
package com.example.croppic;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private ImageView ivImage;
private Button btnGet;
private static final int BITMAPCROP = 3021;
private File file;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivImage = (ImageView) findViewById(R.id.ivShow);
btnGet = (Button) findViewById(R.id.btnGet);
String filename = android.os.Environment.getExternalStorageDirectory().getPath()
+ "/dcim/100MEDIA/test.jpg";
file = new File(filename);
btnGet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!file.exists()) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.l1);
dumpBitmap(bitmap);
}
Uri uri = Uri.fromFile(file);//从文件里获取图片uri
Intent intent = MainActivity.getCropImageIntent(uri);
startActivityForResult(intent, BITMAPCROP);
}
});
}
/**
* 保存图片
* @param b
*/
public void dumpBitmap(Bitmap b) {
if (b != null) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}
/**
*获取截图intent
* @param photoUri
* @return
*/
public static Intent getCropImageIntent(Uri photoUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(photoUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 1);//当xy为1,1时,表示截图框长宽比例1:1
// intent.putExtra("outputX", 300);
// intent.putExtra("outputY", 300);//输出的图片比例
intent.putExtra("return-data", true);
return intent;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
if(file.exists()){
file.delete();
}
switch (requestCode) {
case BITMAPCROP:
Bitmap bm = data.getParcelableExtra("data");
if (bm != null) {
ivImage.setLayoutParams(new LinearLayout.LayoutParams(bm.getWidth(), bm.getHeight()));
ivImage.setImageBitmap(bm);
}
break;
}
}
}
xml布局文件activity_main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnGet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GET"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/ivShow"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"/>
</LinearLayout>
</LinearLayout>
别忘了权限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
package com.example.croppic;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
private ImageView ivImage;
private Button btnGet;
private static final int BITMAPCROP = 3021;
private File file;
Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ivImage = (ImageView) findViewById(R.id.ivShow);
btnGet = (Button) findViewById(R.id.btnGet);
String filename = android.os.Environment.getExternalStorageDirectory().getPath()
+ "/dcim/100MEDIA/test.jpg";
file = new File(filename);
btnGet.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!file.exists()) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.l1);
dumpBitmap(bitmap);
}
Uri uri = Uri.fromFile(file);//从文件里获取图片uri
Intent intent = MainActivity.getCropImageIntent(uri);
startActivityForResult(intent, BITMAPCROP);
}
});
}
/**
* 保存图片
* @param b
*/
public void dumpBitmap(Bitmap b) {
if (b != null) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
}
/**
*获取截图intent
* @param photoUri
* @return
*/
public static Intent getCropImageIntent(Uri photoUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(photoUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 0);
intent.putExtra("aspectY", 1);//当xy为1,1时,表示截图框长宽比例1:1
// intent.putExtra("outputX", 300);
// intent.putExtra("outputY", 300);//输出的图片比例
intent.putExtra("return-data", true);
return intent;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK)
return;
if(file.exists()){
file.delete();
}
switch (requestCode) {
case BITMAPCROP:
Bitmap bm = data.getParcelableExtra("data");
if (bm != null) {
ivImage.setLayoutParams(new LinearLayout.LayoutParams(bm.getWidth(), bm.getHeight()));
ivImage.setImageBitmap(bm);
}
break;
}
}
}
xml布局文件activity_main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnGet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="GET"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<ImageView
android:id="@+id/ivShow"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"/>
</LinearLayout>
</LinearLayout>
别忘了权限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
- CropPic.rar (1.5 MB)
- 下载次数: 1
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 987使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 749java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 608我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 587Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 527先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 642相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 852参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 402图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 461参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2649今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 555由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2114Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 614最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 676以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 471参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 424参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1236参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2380参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 642http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 612用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
Android截屏截图是 Android 开发中常见的需求, Android 截屏截图方法汇总将为您带来多种截屏截图方法的总结,让您更好地掌握 Android 截屏截图技术。在本文中,我们将探讨 Activity、View、ScrollView、ListView、...
通过学习和实践这个DEMO,开发者能够掌握Android客户端截屏功能的实现,理解服务与客户端之间的通信方式,以及Android系统中与截图相关的权限管理。这有助于在自己的应用中实现类似的高级功能。
通过阅读提供的博客文章(http://blog.csdn.net/u013171283/article/details/79032369),你可以了解到如何将这个功能集成到你的Android应用中,比如创建一个按钮,点击后触发截屏操作,并将截图保存到应用的私有...
是android轻量级的截屏工具非常的好用 1.把脚本放入指定目录下面: C:\Users\****\AppData\Local\Android\Sdk\platform-tools 2.把用手机打开想要截图的页面双击运行此脚本,图片就截取到脚本所在的文件夹
这个"android截图的demo(手机屏幕截图)"就是一个展示如何在Android应用中实现这一功能的例子。在这个Demo中,开发者可以学习到如何捕获设备屏幕,并将截图保存为图像文件。 首先,我们需要了解Android中的`View`...
这个名为"Android截屏Demo"的项目提供了一个简单的示例,展示了如何通过编程方式实现在Android设备上进行屏幕截图。下面,我们将深入探讨这个Demo所涉及的核心知识点,以及如何实现这个功能。 1. **Android权限**:...
在Android平台上,实现截屏功能是一项常见的需求,无论是开发者调试应用还是用户分享屏幕内容,都需要用到这个功能。本篇文章将详细讲解如何在Android中实现截屏效果,并提供一个简单的DEMO供参考。 首先,我们需要...
总的来说,实现不需root的Android截图并将其解析为BMP格式是一项涉及Android系统接口、JNI编程以及图像处理技术的任务。通过理解Android系统的工作原理,熟练掌握C++和Java的混合编程,我们可以创建出自己的截图工具...
在Android系统中,截屏是一项常见的功能,用户可以轻松地保存屏幕上的当前显示内容作为图片。无需root权限的截屏代码对于许多开发者和用户来说都极具价值,因为root权限可能会带来安全风险。以下是对"android截屏...
这份毕业设计的源码Demo就是针对这样的需求,它提供了Android截图并将其转换为圆形的实现方法,同时展示了如何利用Canvas进行自定义绘图。下面将详细解释其中涉及的主要知识点: 1. **Android截图**: 在Android中...
在Android操作系统中,"android截屏(root)"是指通过获取设备的root权限来实现更高级别的屏幕截图功能。root是Android系统中的一个概念,它允许用户获取到系统的最高权限,能够访问和修改系统级别的文件,包括那些...
在Android平台上,截屏和录制屏幕是两种常见的功能,它们对于开发者调试应用、用户分享屏幕内容或制作教程视频都有重要作用。接下来,我们将深入探讨这两种技术的实现原理。 **一、Android 截屏** 1. **获取屏幕...
PC端 android 截图软件 ,电脑端可以实时显示,很方便,支持所以的android手机
在Android平台上,截屏和对截图进行模糊处理是常见的需求,尤其在开发用户界面或调试应用时。本文将深入探讨如何实现这两个功能,并基于提供的"TestPrintScreenAndBlur"压缩包文件来解释其中的FastBlur算法。 首先...
在Android系统中,截屏功能是一项基础且常用的操作,它允许用户快速捕获屏幕上的内容以便分享或保存。本文将围绕“android截屏”这一主题,深入探讨Android平台上的截屏实现方式,以及如何开发一个简单的截屏应用,...
6. **通知用户**:成功保存后,可以通过Notification或者Toast通知用户截屏已完成,并提供查看或分享截图的选项。 在压缩包文件名称列表中的"androidTest"可能是一个示例项目或者测试代码,它包含了实现上述功能的...
这个“Android代码-Android截图圆形Canvas.rar”压缩包可能包含了一个实现这种功能的示例项目。下面我们将详细探讨如何在Android中实现圆形截图的功能。 首先,Android中的截图通常通过`View`类的`draw()`方法或者`...
综上所述,Android截图功能的实现不仅包括基本的系统截图,还可以通过扩展功能提高用户体验,例如摇一摇截图和定时截图。开发者需要注意设备差异、权限管理、性能优化和用户隐私保护,以提供更加完善的截图解决方案...
android截图 区域截图 部分截图