Android中图形截取的方式介绍

厌伴老儒烹瓠叶,强随举子踏槐花。这篇文章主要讲述Android中图形截取的方式介绍相关的知识,希望能为你提供帮助。
【Android中图形截取的方式介绍】在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.
这就是设置截取比例的。



    推荐阅读