- 浏览: 537318 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
将view映射到一个bitmap中,稍加改进可以用于一些截图工具或者截图软件(QQ截图之类),例子写的不够完善,不过很有些学习的意义内容大致如下:
在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap。
在使用的时候调用
Bitmap bitmap = view.getDrawingCache();
就可以得到图片的bitmap了。
为了测试这个功能,作者使用了两种方式来创建LinerLayout中的内容,一种是在xml文件中就将view的内容添加了,只需在代码中添加对应ImageView中的图片就行了;另一种是动态添加LinerLayout中的View。
工程结构图:
[img]
[/img]
布局文件:
main.xml
add_view.xml
set_view.xml
AddViewActivity
MainActivity
SetViewActivity
转自:http://hddev.blog.51cto.com/3365350/629808
只为学习。
在Android中自有获取view中的cache内容,然后将内容转换成bitmap,方法名是:getDrawingCache(),返回结果为Bitmap。
在使用的时候调用
Bitmap bitmap = view.getDrawingCache();
就可以得到图片的bitmap了。
为了测试这个功能,作者使用了两种方式来创建LinerLayout中的内容,一种是在xml文件中就将view的内容添加了,只需在代码中添加对应ImageView中的图片就行了;另一种是动态添加LinerLayout中的View。
工程结构图:
[img]
[/img]
布局文件:
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/setview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="SET_VIEW" /> <Button android:id="@+id/addview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ADD_VIEW" /> </LinearLayout>
add_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="add_view" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/addViewContent" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/addViewCache" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imgAddViewCache" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
set_view.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text="set_view" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/content" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imgSource1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imgSource2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/cache" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imgCache" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
AddViewActivity
package com.zart; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; public class AddViewActivity extends Activity { private LinearLayout addViewContent; private ImageView imgAddViewCache; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.add_view); addViewContent = (LinearLayout) findViewById(R.id.addViewContent); imgAddViewCache = (ImageView) findViewById(R.id.imgAddViewCache); // addImgSource(); addRelativeLayout(); addViewContent.setDrawingCacheEnabled(true); addViewContent.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); addViewContent.layout(0, 0, addViewContent.getMeasuredWidth(), addViewContent.getMeasuredHeight()); addViewContent.buildDrawingCache(); int color = addViewContent.getDrawingCacheBackgroundColor(); Bitmap cacheBitmap = addViewContent.getDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(cacheBitmap);// 注意:这地方必须特别注意 if (bitmap != null) { imgAddViewCache.setImageBitmap(bitmap); imgAddViewCache.setDrawingCacheBackgroundColor(color); } else { Log.i("CACHE_BITMAP", "DrawingCache=null"); } } private void addRelativeLayout() { // TODO Auto-generated method stub RelativeLayout.LayoutParams layoutpare = new RelativeLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); RelativeLayout relativeLayout = new RelativeLayout(this); relativeLayout.setLayoutParams(layoutpare); ImageView imgView1 = new ImageView(this); ImageView imgView2 = new ImageView(this); imgView1.setImageResource(R.drawable.source1); imgView2.setImageResource(R.drawable.source2); RelativeLayout.LayoutParams img1 = new RelativeLayout.LayoutParams(38, 38); img1.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); RelativeLayout.LayoutParams img2 = new RelativeLayout.LayoutParams(38, 38); img2.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); relativeLayout.addView(imgView1, img1); relativeLayout.addView(imgView2, img2); addViewContent.addView(relativeLayout); } /** * 添加图片源 */ private void addImgSource() { ImageView imgView1 = new ImageView(this); ImageView imgView2 = new ImageView(this); imgView1.setImageResource(R.drawable.source1); imgView2.setImageResource(R.drawable.source2); addViewContent.addView(imgView1, new LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); addViewContent.addView(imgView2, new LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); } }
MainActivity
package com.zart; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button btn_setView; private Button btn_addView; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); btn_setView = (Button) findViewById(R.id.setview); btn_addView = (Button) findViewById(R.id.addview); btn_setView.setOnClickListener(this); btn_addView.setOnClickListener(this); } @Override public void onClick(View view) { // TODO Auto-generated method stub switch (view.getId()) { case R.id.setview: Intent intent1 = new Intent(); intent1.setClass(this, SetViewActivity.class); startActivity(intent1); break; case R.id.addview: Intent intent2 = new Intent(); intent2.setClass(this, AddViewActivity.class); startActivity(intent2); break; default: break; } } }
SetViewActivity
package com.zart; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.View.MeasureSpec; import android.widget.ImageView; import android.widget.LinearLayout; public class SetViewActivity extends Activity { /** Called when the activity is first created. */ private LinearLayout contentLayout; private ImageView imgSource1; private ImageView imgSource2; private ImageView imgCache; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.set_view); contentLayout = (LinearLayout) findViewById(R.id.content); imgSource1 = (ImageView) findViewById(R.id.imgSource1); imgSource2 = (ImageView) findViewById(R.id.imgSource2); imgCache = (ImageView) findViewById(R.id.imgCache); imgSource1.setImageResource(R.drawable.source1); imgSource2.setImageResource(R.drawable.source2); contentLayout.setDrawingCacheEnabled(true); contentLayout.measure( MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); contentLayout.layout(0, 0, contentLayout.getMeasuredWidth(), contentLayout.getMeasuredHeight()); contentLayout.buildDrawingCache(); Bitmap bitmap= contentLayout.getDrawingCache(); if(bitmap!=null){ imgCache.setImageBitmap(bitmap); }else{ Log.i("CACHE_BITMAP", "DrawingCache=null"); } } }
转自:http://hddev.blog.51cto.com/3365350/629808
只为学习。
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2015android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2048Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1558SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 813Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 741转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1024===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1709(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1440在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 985package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1265工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1023SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1233Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 800一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1186运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 905package com.zzl.tools; impor ...
相关推荐
在Android开发中,有时我们需要将View的显示内容截图并保存为Bitmap,以便进行分享或者其他图形处理操作。这个过程涉及到Android的视图系统、图形处理以及文件存储等多个知识点。以下将详细讲解如何实现这一功能。 ...
在Android开发中,将View转换为Bitmap是一种常见的需求,尤其在实现屏幕截图、保存或分享View内容、创建自定义控件或动态生成图片等场景下。以下是对如何将Android View转换为Bitmap的深入解析,包括代码逻辑分析、...
首先创建一个与View大小相同的Bitmap,然后创建一个与Bitmap关联的Canvas,最后调用View的`draw(Canvas)`方法将View的内容绘制到Canvas上。以下是一个简单的示例代码: ```java View view = findViewById(R.id....
在这篇文章中,我们将详细介绍如何将 Canvas 转换为 Bitmap,并将其显示在 ImageView 中。 首先,让我们了解为什么需要将 Canvas 转换为 Bitmap。在 Android 中,Canvas 是一个用于绘制图形的组件,但它不能直接...
Android不支持将Bitmap转换成单色的Bmp图片,所以参考Bmp格式说明,自己写了一个转换类。亲测有效!!!
- **分享功能**:当分享图片时,可以将Bitmap转换为String,然后嵌入到分享链接的HTML中。 提供的`PicDemo`压缩包文件可能包含了实现这些转换的工具类和示例代码。通过阅读和学习这些代码,开发者可以更好地理解和...
在得到包含自定义View内容和文案的Bitmap后,你可以根据小程序的接口要求,将其转换为适合的格式(例如Base64编码的字符串),然后通过API进行分享。 ```java ByteArrayOutputStream stream = new ...
本篇文章将详细解释如何在VC中将Bitmap对象转换为Byte数组。 首先,理解Bitmap对象。Bitmap是Windows GDI(Graphics Device Interface)中的一个重要组件,用于存储和操作图像。它包含了图像的宽度、高度、颜色深度...
在Android开发中,Bitmap是用于表示图像数据的一种对象,它在内存中占用较大空间,因此在处理图片时,我们有时需要将其转换为byte数组(byte[]),以便于存储、传输或者在网络流中使用。这个过程涉及到图像数据的...
在Android开发中,有时我们需要将一个View转换成图片进行保存或者分享,比如截图、制作预览图等。这个过程涉及到的主要知识点是View的绘制和Bitmap的处理。下面将详细讲解如何实现这一功能。 首先,我们要了解`View...
在进行机器视觉项目时,有时我们需要将Bitmap图像转换为Halcon能识别的图像类型,即HObject,以便在Halcon中进行后续的图像分析和处理。下面我们将详细讲解如何实现这个转换过程,并探讨相关的IT知识点。 首先,让...
总结来说,图片比例缩放和Bitmap转BitmapDrawable是Android开发中的基础技能,它们涉及到内存管理、性能优化以及用户界面的美观性。理解并熟练掌握这些技巧对于构建高质量的Android应用至关重要。通过阅读博文和研究...
本文将深入探讨如何在Visual C++(VC)环境中,利用Halcon进行Bitmap(位图)转换,特别关注如何获取图像像素信息,并将其转换为灰度图像。 #### 一、Halcon与VC的集成:图像读取与指针获取 在VC中使用Halcon进行...
在Android开发中,有时我们需要将Bitmap对象转换成不同的图片格式,比如BMP。BMP(Bitmap File Format)是一种常见的位图文件格式,但它并不像JPEG或PNG那样被Android SDK直接支持。本文将详细介绍如何在Android中将...
如:图片内容为“1”命名为“1.png”,图片内容为“万”命名为“万.png” 2、将该软件放在图片所在文件夹下。 3、运行该软件。①提示“请输入字体大小(如24)”,输入字体的大小,然后回车;②提示“请输入...
本篇文章将深入探讨如何在Android中对Bitmap图片进行处理,使其能够以任意角度显示为圆角,以及涉及到的相关技术。 首先,我们要理解Android中的ImageView组件,它是用来显示图像的视图,可以显示Bitmap或者从资源...
3. **遍历像素并复制**: 接下来,我们需要遍历原始Bitmap的每一个像素,将其转换为RGB32格式,并复制到新Bitmap中。这可以通过LockBits和Marshal.Copy实现,以提高性能。 ```csharp Rectangle rect = new Rectangle...
在Android开发中,我们经常会遇到需要对Bitmap进行各种操作的情况,其中旋转Bitmap就是一种常见的需求,比如用户拍摄照片后需要调整角度,或者在设计UI时需要动态调整图片的方向。这个“Bitmap位图旋转范例”是一个...
Android 开发者学习笔记——View、Canvas、bitmap 是 Android 开发中常用的类,本文将通过实例讲解 View、Canvas 等相关知识点。 从资源中获取位图 在 Android 开发中,获取位图可以使用 BitmapDrawable 或 ...