在Android的应用中,有时候我们想仅仅显示一部分图像,这时候就要求图形截图。

1、随意截取图像的方法,以下我们具体介绍一下android中的重要类——Bitmap

public final class

Bitmap

extends Object

implements Parcelable

java.lang.Object
  android.graphics.Bitmap



以下是Bitmap的全部应用方法,我们要熟悉记住:

公有方法
boolean compress(Bitmap.CompressFormat format,
int quality, OutputStream stream)

Write a compressed version of the bitmap to the specified outputstream.
Bitmap copy(Bitmap.Config config,
boolean isMutable)

Tries to make a new bitmap based on the dimensions of this bitmap, setting the new bitmap's config to the one specified, and then copying this bitmap's pixels into the new bitmap.
void copyPixelsFromBuffer(Buffer src)

Copy the pixels from the buffer, beginning at the current position, overwriting the bitmap's pixels.
void copyPixelsToBuffer(Buffer dst)

Copy the bitmap's pixels into the specified buffer (allocated by the caller).
static Bitmap createBitmap(Bitmap source,
int x, int y, int width, int height, Matrix m, boolean filter)

Returns an immutable bitmap from subset of the source bitmap, transformed by the optional matrix.
static Bitmap createBitmap(int
width, int height, Bitmap.Config config)

Returns a mutable bitmap with the specified width and height.
static Bitmap createBitmap(Bitmap source,
int x, int y, int width, int height)

Returns an immutable bitmap from the specified subset of the source bitmap.
static Bitmap createBitmap(int[]
colors, int offset, int stride, int width, int height, Bitmap.Config config)

Returns a immutable bitmap with the specified width and height, with each pixel value set to the corresponding value in the colors array.
static Bitmap createBitmap(Bitmap src)

Returns an immutable bitmap from the source bitmap.
static Bitmap createBitmap(int[]
colors, int width, int height, Bitmap.Config config)

Returns a immutable bitmap with the specified width and height, with each pixel value set to the corresponding value in the colors array.
static Bitmap createScaledBitmap(Bitmap src,
int dstWidth, int dstHeight, boolean filter)

Creates a new bitmap, scaled from an existing bitmap.
int describeContents()

No special parcel contents.
void eraseColor(int c)

Fills the bitmap's pixels with the specified Color.
Bitmap extractAlpha()

Returns a new bitmap that captures the alpha values of the original.
Bitmap extractAlpha(Paint paint,
int[] offsetXY)

Returns a new bitmap that captures the alpha values of the original.
final Bitmap.Config getConfig()

If the bitmap's internal config is in one of the public formats, return that config, otherwise return null.
int getDensity()

Returns the density for this bitmap.

final int getHeight()

Returns the bitmap's height
byte[] getNinePatchChunk()

Returns an optional array of private data, used by the UI system for some bitmaps.
int getPixel(int x, int y)

Returns the Color at
the specified location.
void getPixels(int[]
pixels, int offset, int stride, int x, int y, int width, int height)

Returns in pixels[] a copy of the data in the bitmap.
final int getRowBytes()

Return the number of bytes between rows in the bitmap's pixels.
int getScaledHeight(int targetDensity)

Convenience method that returns the height of this bitmap divided by the density scale factor.
int getScaledHeight(DisplayMetrics metrics)

Convenience for calling getScaledHeight(int) with
the target density of the given DisplayMetrics.
int getScaledHeight(Canvas canvas)

Convenience for calling getScaledHeight(int) with
the target density of the given Canvas.
int getScaledWidth(DisplayMetrics metrics)

Convenience for calling getScaledWidth(int) with
the target density of the given DisplayMetrics.
int getScaledWidth(int targetDensity)

Convenience method that returns the width of this bitmap divided by the density scale factor.
int getScaledWidth(Canvas canvas)

Convenience for calling getScaledWidth(int) with
the target density of the given Canvas.
final int getWidth()

Returns the bitmap's width
final boolean hasAlpha()

Returns true if the bitmap's config supports per-pixel alpha, and if the pixels may contain non-opaque alpha values.
final boolean isMutable()

Returns true if the bitmap is marked as mutable (i.e.
final boolean isRecycled()

Returns true if this bitmap has been recycled.
void prepareToDraw()

Rebuilds any caches associated with the bitmap that are used for drawing it.
void recycle()

Free up the memory associated with this bitmap's pixels, and mark the bitmap as "dead", meaning it will throw an exception if getPixels() or setPixels() is called, and will draw nothing.
void setDensity(int density)

Specifies the density for this bitmap.

void setPixel(int x, int y, int color)

Write the specified Color into
the bitmap (assuming it is mutable) at the x,y coordinate.
void setPixels(int[]
pixels, int offset, int stride, int x, int y, int width, int height)

Replace pixels in the bitmap with the colors in the array.
void writeToParcel(Parcel p,
int flags)

Write the bitmap and its pixels to the parcel.

这是我们实现截图图形的重要方法:

static Bitmap createBitmap(Bitmap source,
int x, int y, int width, int height)

Returns an immutable bitmap from the specified subset of the source bitmap.

第一个參数source就是本来的Bitmap对象,后面的四个參数分别表示截取的范围。



2、另一种方法,不是随意截取图形。而是从图像的一端(上、下、左、右)截取图像。也能够使用图像截取资源,这样的资源须要在res/drawable文件夹中建立一个xml文件

<clip xmlns:android="http://schemas.android.com/apk/res/android"
android:clipOrientation="horizontal"
android:drawable="@drawable/ic_launcher"
android:gravity="left" >
</clip>

然后我们能够通过ClipDrawable获取要截取的图像:

public class

ClipDrawable

extends Drawable

implements Drawable.Callback

java.lang.Object
    android.graphics.drawable.Drawable
      android.graphics.drawable.ClipDrawable
公有方法
void draw(Canvas canvas)

Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter).
int getChangingConfigurations()

Return a mask of the configuration parameters for which this drawable may change, requiring that it be re-created.
Drawable.ConstantState getConstantState()
int getIntrinsicHeight()

Return the intrinsic height of the underlying drawable object.
int getIntrinsicWidth()

Return the intrinsic width of the underlying drawable object.
int getOpacity()

Return the opacity/transparency of this Drawable.
boolean getPadding(Rect padding)

Return in padding the insets suggested by this Drawable for placing content inside the drawable's bounds.
void inflate(Resources r, XmlPullParser parser, AttributeSet attrs)
void invalidateDrawable(Drawable who)

Called when the drawable needs to be redrawn.
boolean isStateful()

Indicates whether this view will change its appearance based on state.
void scheduleDrawable(Drawable who, Runnable what,
long when)

A Drawable can call this to schedule the next frame of its animation.
void setAlpha(int alpha)

Specify an alpha value for the drawable.
void setColorFilter(ColorFilter cf)

Specify an optional colorFilter for the drawable.
boolean setVisible(boolean
visible, boolean restart)

Set whether this Drawable is visible.
void unscheduleDrawable(Drawable who, Runnable what)

A Drawable can call this to unschedule an action previously scheduled with scheduleDrawable(Drawable,
Runnable, long)
.

而我们通常所用的Drawable里面有一个方法:

  • The setLevel(int) method
    allows the client to supply a single continuous controller that can modify the Drawable is displayed, such as a battery level or progress level. Some drawables may modify their imagery based on the current level.

这就是设置截取比例的。

Android中图形截取的方式介绍的更多相关文章

  1. Android笔记——Android中数据的存储方式(二)

    我们在实际开发中,有的时候需要储存或者备份比较复杂的数据.这些数据的特点是,内容多.结构大,比如短信备份等.我们知道SharedPreferences和Files(文本文件)储存这种数据会非常的没有效 ...

  2. Android视频播放的两种方式介绍

    1.在Android 中播放视频的方式有两种: 第一种方式是使用MediaPlayer 结合SurfaceView 来播放,通过MediaPlayer来控制视频的播放.暂停.进度等: 通过Surfac ...

  3. android 定位的几种方式介绍

    [地理位置] android 定位的几种方式介绍 开发中对于地图及地理位置的定位是我们经常要用地,地图功能的使用使得我们应用功能更加完善,下面 www.androidkaifa.com 总结了一下网络 ...

  4. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

  5. Android 中LocalBroadcastManager的使用方式

    Android 中LocalBroadcastManager的使用方式 在android-support-v4.jar中引入了LocalBroadcastManager,称为局部通知管理器,这种通知的 ...

  6. Android DevArt6:Android中IPC的六种方式

    Android中IPC的六种方式 1.使用Bundle 最简单的进程间通信方式:Intent + Bundle: 支持三大组件:Activity.Service.BroadcastReceiver : ...

  7. (转)Android 中LocalBroadcastManager的使用方式

    发表于2个月前(2014-11-03 22:05)   阅读(37) | 评论(0) 0人收藏此文章, 我要收藏 赞0 1月10日 #长沙# OSC 源创会第32期开始报名 摘要 android中广播 ...

  8. Android中如何截取字符串中某个字符之前或之后的字符串

    代码改变世界 Android中如何截取字符串中某个字符之前或之后的字符串 //截取#之前的字符串 String str = "sdfs#d"; str.substring(0, s ...

  9. Android 中常见控件的介绍和使用

    1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.la ...

随机推荐

  1. Vue 国家省市三级联动

    在网上查阅一下,基本上是省市区三级联动,国家省市的就只能自己动手了. 样式就根据自己的需要去调整了. JSON数组太长,就折叠放在了后面. 效果图: <!DOCTYPE html> < ...

  2. ifup&&ifdown --- 激活/关闭指定的网络接口。

    ifup命令用于激活指定的网络接口. ifup eth0 #激活eth0 ifdown命令用于禁用指定的网络接口. ifdown eth0 #禁用eth0

  3. 【习题 8-3 UVA - 12545】Bits Equalizer

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果1的个数第一个串比第2个串多. 那么就无解. 否则. 找几个位置去凑1 优先找'?'然后才是0的位置 剩余的全都用swap操作就 ...

  4. Java中join和yield的作用

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1.   A.join,在API中的解释是,堵塞当前线程B,直到A执行完毕并死掉,再执行B. 用一个 ...

  5. 软件project经验总结系列之三 - 计划阶段控制

    本文为软件project经验总结系列文章的第三篇.按照总论文章所设立的范围划分,本阶段重点讲述计划阶段的控制过程以及控制思路,笔者所站在的角度是乙方角度来进行表述整个阶段的推动过程,但对于甲方公司其基 ...

  6. Qt程序调试之Q_ASSERT断言(它是一个宏,接受布尔值,当其中的布尔值为真时,便什么也不做)

    在使用Qt开发大型软件时,难免要调试程序,以确保程序内的运算结果符合我们的预期.在不符合预期结果时,就直接将程序断下,以便我们修改. 这就用到了Qt中的调试断言 - Q_ASSERT. 用一个小例子来 ...

  7. 27.Node.js模块系统

    转自:http://www.runoob.com/nodejs/nodejs-module-system.html 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模 ...

  8. Android 使用AIDL实现进程间的通信

    在Android中,如果我们需要在不同进程间实现通信,就需要用到AIDL技术去完成. AIDL(android Interface Definition Language)是一种接口定义语言,编译器通 ...

  9. [原创]react-vio-form 快速构建React表单应用

    react-vio-form 是一个react的快速轻量表单库,能快速实现表单构建.提供自定义表单格式.表单校验.表单信息反馈.表单信息隔离等功能.可采用组件声明或者API的形式来实现表单的功能 de ...

  10. BZOJ2527: [Poi2011]Meteors(整体二分)

    Description Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby gala ...