Android 图片Bitmap的剪切的示例代码

一、什么是Android中的Bitmap

Bitmap是Android系统中的图像处理的最重要类之一。用它可以获取图像文件信息,进行图像剪切、旋转、缩放等操作,并可以指定格式保存图像文件。

二、Bitmap的剪切基本操作

代码如下:

public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter)

从原始位图剪切图像,这是一种高级的方式。可以用Matrix(矩阵)来实现旋转等高级方式截图

参数说明:

Bitmap source:要从中截图的原始位图

int x:起始x坐标

int y:起始y坐标

int width:要截的图的宽度

int height:要截的图的宽度

Bitmap.Config  config:一个枚举类型的配置,可以定义截到的新位图的质量

返回值:返回一个剪切好的Bitmap

三、Bitmap剪切的封装

实际使用中,因为项目需要时常需要对基本功能进行封装,下面是一段封装的代码,仅供参考。

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF; 

public class BitmapCut
{ 

 /**
 * 通过资源id转化成Bitmap
 *
 * @param context
 * @param resId
 * @return
 */
 public static Bitmap ReadBitmapById(Context context, int resId)
 {
 BitmapFactory.Options opt = new BitmapFactory.Options();
 opt.inPreferredConfig = Bitmap.Config.RGB_565;
 opt.inPurgeable = true;
 opt.inInputShareable = true; 

 InputStream is = context.getResources().openRawResource(resId);
 return BitmapFactory.decodeStream(is, null, opt);
 } 

 /**
 * 设置背景为圆角
 *
 * @param bitmap
 * @param pixels
 * @return
 */
 public static Bitmap removeYuanjiao(Bitmap bitmap, int pixels)
 {
 int width = bitmap.getWidth();
 int height = bitmap.getHeight(); 

 Bitmap creBitmap = Bitmap.createBitmap(width, height,
  android.graphics.Bitmap.Config.ARGB_8888);
 Canvas canvas = new Canvas(creBitmap); 

 Paint paint = new Paint();
 float roundPx = pixels;
 RectF rectF = new RectF(0, 0, bitmap.getWidth() - pixels,
  bitmap.getHeight() - pixels);
 paint.setAntiAlias(true); 

 canvas.drawARGB(0, 0, 0, 0);
 canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
 paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); 

 canvas.drawBitmap(bitmap, 0, 0, paint);
 if (!bitmap.isRecycled())
  bitmap.recycle(); 

 return creBitmap;
 } 

 /**
 * 按正方形裁切图片
 */
 public static Bitmap ImageCrop(Bitmap bitmap, boolean isRecycled)
 { 

 if (bitmap == null)
 {
  return null;
 } 

 int w = bitmap.getWidth(); // 得到图片的宽,高
 int h = bitmap.getHeight(); 

 int wh = w > h ? h : w;// 裁切后所取的正方形区域边长 

 int retX = w > h ? (w - h) / 2 : 0;// 基于原图,取正方形左上角x坐标
 int retY = w > h ? 0 : (h - w) / 2; 

 Bitmap bmp = Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null,
  false);
 if (isRecycled && bitmap != null && !bitmap.equals(bmp)
  && !bitmap.isRecycled())
 {
  bitmap.recycle();
  bitmap = null;
 } 

 // 下面这句是关键
 return bmp;// Bitmap.createBitmap(bitmap, retX, retY, wh, wh, null,
   // false);
 } 

 /**
 * 按长方形裁切图片
 *
 * @param bitmap
 * @return
 */
 public static Bitmap ImageCropWithRect(Bitmap bitmap)
 {
 if (bitmap == null)
 {
  return null;
 } 

 int w = bitmap.getWidth(); // 得到图片的宽,高
 int h = bitmap.getHeight(); 

 int nw, nh, retX, retY;
 if (w > h)
 {
  nw = h / 2;
  nh = h;
  retX = (w - nw) / 2;
  retY = 0;
 } else
 {
  nw = w / 2;
  nh = w;
  retX = w / 4;
  retY = (h - w) / 2;
 } 

 // 下面这句是关键
 Bitmap bmp = Bitmap.createBitmap(bitmap, retX, retY, nw, nh, null,
  false);
 if (bitmap != null && !bitmap.equals(bmp) && !bitmap.isRecycled())
 {
  bitmap.recycle();
  bitmap = null;
 }
 return bmp;// Bitmap.createBitmap(bitmap, retX, retY, nw, nh, null,
   // false);
 } 

 /**
 * Bitmap --> byte[]
 *
 * @param bmp
 * @return
 */
 public static byte[] readBitmap(Bitmap bmp)
 {
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 bmp.compress(Bitmap.CompressFormat.JPEG, 60, baos);
 try
 {
  baos.flush();
  baos.close();
 } catch (IOException e)
 {
  e.printStackTrace();
 }
 return baos.toByteArray();
 } 

 /**
 * 将图像裁剪成圆形
 *
 * @param bitmap
 * @return
 */
 public static Bitmap toRoundBitmap(Bitmap bitmap)
 {
 if (bitmap == null)
 {
  return null;
 } 

 int width = bitmap.getWidth();
 int height = bitmap.getHeight();
 float roundPx;
 float left, top, right, bottom, dst_left, dst_top, dst_right, dst_bottom;
 if (width <= height)
 {
  roundPx = width / 2;
  top = 0;
  bottom = width;
  left = 0;
  right = width;
  height = width;
  dst_left = 0;
  dst_top = 0;
  dst_right = width;
  dst_bottom = width;
 } else
 {
  roundPx = height / 2;
  float clip = (width - height) / 2;
  left = clip;
  right = width - clip;
  top = 0;
  bottom = height;
  width = height;
  dst_left = 0;
  dst_top = 0;
  dst_right = height;
  dst_bottom = height;
 } 

 Bitmap output = Bitmap.createBitmap(width, height, Config.ARGB_8888);
 Canvas canvas = new Canvas(output); 

 final int color = 0xff424242;
 final Paint paint = new Paint();
 final Rect src = new Rect((int) left, (int) top, (int) right,
  (int) bottom);
 final Rect dst = new Rect((int) dst_left, (int) dst_top,
  (int) dst_right, (int) dst_bottom);
 final RectF rectF = new RectF(dst); 

 paint.setAntiAlias(true); 

 canvas.drawARGB(0, 0, 0, 0);
 paint.setColor(color);
 canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
 canvas.drawBitmap(bitmap, src, dst, paint);
 if (bitmap != null && !bitmap.isRecycled())
 {
  bitmap.recycle();
  bitmap = null;
 }
 return output;
 } 

 // 将图片变成带圆边的圆形图片
 public static Bitmap getRoundBitmap(Bitmap bitmap, int width, int height)
 {
 if (bitmap == null)
 {
  return null;
 }
 // 将图片变成圆角
 Bitmap roundBitmap = Bitmap.createBitmap(width, height,
  Config.ARGB_8888);
 Canvas canvas = new Canvas(roundBitmap);
 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 int len = (width > height) ? height : width;
 canvas.drawCircle(width / 2, height / 2, len / 2 - 8, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
 Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, len, len, true);
 canvas.drawBitmap(scaledBitmap, 0, 0, paint);
 // 将图片加圆边
 Bitmap outBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
 canvas = new Canvas(outBitmap);
 paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 paint.setColor(0xffffffff);
 canvas.drawCircle(width / 2, height / 2, len / 2 - 4, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OVER));
 canvas.drawBitmap(roundBitmap, 0, 0, paint);
 bitmap.recycle();
 bitmap = null;
 roundBitmap.recycle();
 roundBitmap = null;
 scaledBitmap.recycle();
 scaledBitmap = null;
 return outBitmap;
 } 

 // 将图片变成带圆边的圆形图片
 public static Bitmap getRoundBitmap(Bitmap bitmap, int width, int height,
  int color)
 {
 if (bitmap == null)
 {
  return null;
 }
 // 将图片变成圆角
 Bitmap roundBitmap = Bitmap.createBitmap(width, height,
  Config.ARGB_8888);
 Canvas canvas = new Canvas(roundBitmap);
 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 int len = (width > height) ? height : width;
 canvas.drawCircle(width / 2, height / 2, len / 2 - 8, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
 Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, len, len, true);
 canvas.drawBitmap(scaledBitmap, 0, 0, paint);
 // 将图片加圆边
 Bitmap outBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
 canvas = new Canvas(outBitmap);
 paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 paint.setColor(color);
 canvas.drawCircle(width / 2, height / 2, len / 2 - 4, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OVER));
 canvas.drawBitmap(roundBitmap, 0, 0, paint);
 bitmap.recycle();
 bitmap = null;
 roundBitmap.recycle();
 roundBitmap = null;
 scaledBitmap.recycle();
 scaledBitmap = null;
 return outBitmap;
 } 

 /**
 * function:图片转圆角
 *
 * @param bitmap
 *  需要转的bitmap
 * @param pixels
 *  转圆角的弧度
 * @return 转圆角的bitmap
 */
 public static Bitmap toRoundCorner(Bitmap bitmap, int pixels)
 {
 Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
  bitmap.getHeight(), Config.ARGB_8888);
 Canvas canvas = new Canvas(output);
 final int color = 0xff424242;
 final Paint paint = new Paint();
 final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
 final RectF rectF = new RectF(rect);
 final float roundPx = pixels;
 paint.setAntiAlias(true);
 canvas.drawARGB(0, 0, 0, 0);
 paint.setColor(color);
 canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
 canvas.drawBitmap(bitmap, rect, rect, paint);
 if (bitmap != null && !bitmap.isRecycled())
 {
  bitmap.recycle();
 }
 return output;
 } 

 /**
 * 获取指定的圆角图片
 *
 * @param bitmap
 * @return
 */
 public static Bitmap getRadiusBitmap(Bitmap bitmap)
 {
 Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 paint.setColor(0xffffffff);
 Bitmap radiusBitmap = Bitmap.createBitmap(bitmap.getWidth(),
  bitmap.getHeight(), Config.ARGB_8888);
 Canvas canvas = new Canvas(radiusBitmap);
 RectF rectF = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
 canvas.drawRoundRect(rectF, 7, 7, paint);
 paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
 canvas.drawBitmap(bitmap, 0, 0, paint);
 if (bitmap != null && !bitmap.isRecycled())
 {
  bitmap.recycle();
 }
 return radiusBitmap;
 } 

 // 获得指定大小的圆边的bitmap数组
 public static ArrayList<Bitmap> getRadiusBitmapList(String[] pathArray,
  int size, int len, float radius, int color)
 {
 Bitmap canvasBitmap = null;
 Canvas canvas = null;
 Paint paint = null;
 RectF rectF = new RectF(0, 0, len - radius, len - radius);
 File file = null;
 FileInputStream fis = null;
 Bitmap bitmap = null;
 Bitmap scaledBitmap = null; 

 ArrayList<Bitmap> list = new ArrayList<Bitmap>();
 for (int i = 0; i < pathArray.length; i++)
 {
  file = new File(pathArray[i]);
  if (!file.exists())
  continue;
  try
  {
  fis = new FileInputStream(file);
  bitmap = BitmapFactory.decodeStream(fis);
  if (bitmap != null)
  {
   canvasBitmap = Bitmap.createBitmap(len, len,
    Config.ARGB_8888);
   canvas = new Canvas(canvasBitmap);
   paint = new Paint(Paint.ANTI_ALIAS_FLAG);
   paint.setColor(color);
   canvas.drawRoundRect(rectF, radius, radius, paint);
   paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 

   scaledBitmap = Bitmap.createScaledBitmap(bitmap, len, len,
    true);
   canvas.drawBitmap(scaledBitmap, 0, 0, paint);
   list.add(canvasBitmap);
  }
  } catch (FileNotFoundException e)
  {
  } finally
  {
  if (fis != null)
  {
   try
   {
   fis.close();
   } catch (IOException e1)
   {
   }
  }
  }
  if (list.size() == size)
  break;
 }
 if (scaledBitmap != null && !scaledBitmap.isRecycled())
 {
  scaledBitmap.recycle();
  scaledBitmap = null;
 }
 if (bitmap != null && !bitmap.isRecycled())
 {
  bitmap.recycle();
  bitmap = null;
 }
 return list;
 } 

 /**
 * 按照一定的宽高比例裁剪图片
 *
 * @param bitmap
 * @param num1
 *  长边的比例
 * @param num2
 *  短边的比例
 * @return
 */
 public static Bitmap ImageCrop(Bitmap bitmap, int num1, int num2,
  boolean isRecycled)
 {
 if (bitmap == null)
 {
  return null;
 }
 int w = bitmap.getWidth(); // 得到图片的宽,高
 int h = bitmap.getHeight();
 int retX, retY;
 int nw, nh;
 if (w > h)
 {
  if (h > w * num2 / num1)
  {
  nw = w;
  nh = w * num2 / num1;
  retX = 0;
  retY = (h - nh) / 2;
  } else
  {
  nw = h * num1 / num2;
  nh = h;
  retX = (w - nw) / 2;
  retY = 0;
  }
 } else
 {
  if (w > h * num2 / num1)
  {
  nh = h;
  nw = h * num2 / num1;
  retY = 0;
  retX = (w - nw) / 2;
  } else
  {
  nh = w * num1 / num2;
  nw = w;
  retY = (h - nh) / 2;
  retX = 0;
  }
 }
 Bitmap bmp = Bitmap.createBitmap(bitmap, retX, retY, nw, nh, null,
  false);
 if (isRecycled && bitmap != null && !bitmap.equals(bmp)
  && !bitmap.isRecycled())
 {
  bitmap.recycle();
  bitmap = null;
 }
 return bmp;// Bitmap.createBitmap(bitmap, retX, retY, nw, nh, null,
   // false);
 }
}

示例代码:Bitmaptest_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android Bitmap详细介绍
  • android bitmap compress(图片压缩)代码
  • android通过bitmap生成新图片关键性代码
  • android中Bitmap的放大和缩小实例代码
  • Android Activity之间传递图片(Bitmap)的方法
  • Android利用BitMap获得图片像素数据的方法
  • Android中使用Bitmap类将矩形图片转为圆形的方法
  • Android读取本地或网络图片并转换为Bitmap
(0)

相关推荐

  • Android中使用Bitmap类将矩形图片转为圆形的方法

    一般要做正圆形图片,只能是正方形的基础上才能实现,否则就变成椭圆了,下面说说如何使长方形的图片生成正圆形图片 废话不多说,没图没真相,先上图吧: 原图: 变成正圆后: 下面上代码: public static Bitmap makeRoundCorner(Bitmap bitmap) { int width = bitmap.getWidth(); int height = bitmap.getHeight(); int left = 0, top = 0, right = width, bot

  • Android利用BitMap获得图片像素数据的方法

    本文实例讲述了Android利用BitMap获得图片像素数据的方法.分享给大家供大家参考,具体如下: 网上看到的参考是: int[] pixels = new int[bit.getWidth()*bit.getHeight()];//保存所有的像素的数组,图片宽×高 bit.getPixels(pixels,0,bit.getWidth(),0,0,bit.getWidth(),bit.getHeight()); for(int i = 0; i < pixels.length; i++){

  • android中Bitmap的放大和缩小实例代码

    复制代码 代码如下: /**Bitmap放大的方法*/ private static Bitmap big(Bitmap bitmap) { Matrix matrix = new Matrix(); matrix.postScale(1.5f,1.5f); //长和宽放大缩小的比例 Bitmap resizeBmp = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),matrix,true); return

  • android通过bitmap生成新图片关键性代码

    1.关键性代码 复制代码 代码如下: //R.drawable.test为当前工程里的一张图片 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test); FileOutputStream fos = null; try { File file = new File("/mnt/sdcard/testfile"); if (!file.exists()) { file.mkdir(); }

  • Android Bitmap详细介绍

    复制代码 代码如下: package com.testbitmapscale; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import com.testbitmapscale.R.drawable; im

  • Android Activity之间传递图片(Bitmap)的方法

    在Android开发中:Activity之间传递参数是常见的事:如果我们要在Activity之间传递图片:1.MainActivity中包括一个ImageView:当我们点击ImageView时:把图片传递给另外一个Activity MainActivity的主要代码: 复制代码 代码如下: Intent intent=new Intent(MainActivity.this,TranActivity.class);            intent.putExtra("bitmap"

  • android bitmap compress(图片压缩)代码

    android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片.有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,那么就上传就会很慢(在有些网络情况下),而且很耗流量,要想速度快,那么就需要减小图片的大小.减少图片的大小有两种方法,1. 照小图片: 2. 压缩大图片. 照相时获取小图片一般不太符合要求,因为,图片的清晰度会很差,但是这种情况有个好处就是应用速度会快些: 压缩图片,就是把大图片压缩小,降低图片的质量,在一定范围内,降低图片的大小,并且满足需求(图片仍

  • Android读取本地或网络图片并转换为Bitmap

    在做android项目时,我们经常需要从本地或者网络读取图片,并转换为Bitmap图片,以便使用,下面是读取本地图片并转换的方法: Java代码 /** * 得到本地或者网络上的bitmap url - 网络或者本地图片的绝对路径,比如: * * A.网络路径: url="http://blog.foreverlove.us/girl2.png" ; * * B.本地路径:url="file://mnt/sdcard/photo/image.png"; * * C.

  • Android 图片Bitmap的剪切的示例代码

    一.什么是Android中的Bitmap Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件. 二.Bitmap的剪切基本操作 复制代码 代码如下: public static Bitmap createBitmap (Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) 从原始位图剪切图像,这是一种高

  • Android 图片网格布局控件示例代码

    项目地址:MultiPictureView MultiPictureView是一个可以将多张图片以网格的方式显示的View,通过简单的接口实现烦人的布局,从此解放你的小手手 显示效果 支持设置图片数量上限 支持设置最多显示列数 支持动态布局和静态布局两种模式(见下图) 支持编辑模式和展示模式(编辑模式可以增加和删除图片) 布局方式 动态布局 静态布局 编辑/显示模式 如何使用 1. 在布局中声明 <com.goyourfly.multi_picture.MultiPictureView andr

  • Android实现用文字生成图片的示例代码

    本文介绍了Android实现用文字生成图片的示例代码,分享给大家,具体如下: 效果图 我们先来看看效果图,可以看到下图由各种颜色的"美"字拼接而成,形成了一张不一样的图片. 原理 生成这种图片的原理很简单,但是当时看开源项目时愣是看不懂,因为没学过Python,但是仔细研究,终于能慢慢的理解该开源项目源码,并把它改写成Android平台的源代码.下面把这个算法的主要内容讲给大家,该算法大致原理如下: 1.根据原图片的大小和字体的大小创建一张空白图片 2.把原图片按字体的大小分成若干块,

  • Android图片实现压缩处理的实例代码

    整理文档,搜刮出一个Android图片实现压缩处理的实例代码,稍微整理精简一下做下分享. 详解: 1.获取本地图片File文件 获取BitmapFactory.Options对象 计算原始图片 目标图片宽高比 计算输出的图片宽高 2.根据宽高比计算options.inSampleSize值(缩放比例 If set to a value > 1, requests the decoder to subsample the original image, returning a smaller i

  • Android自定义控件之翻转按钮的示例代码

    本文介绍了Android自定义控件之翻转按钮的示例代码,分享给大家,具体如下: 先看一下效果 一.先定义控件的基本结构 这里我们定义一个容器,所以是在ViewGroup的基础上扩展. 简单起见,直接使用扩展自ViewGroup的LinearLayout,并将我们的控件扩展自LinearLayout. 1.按钮的基本布局如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr

  • Android Flutter实现点赞效果的示例代码

    目录 前言 绘制小手 完整源码 前言 点赞这个动作不得不说在社交.短视频等App中实在是太常见了,当用户手指按下去的那一刻,给用户一个好的反馈效果也是非常重要的,这样用户点起赞来才会有一种强烈的我点了赞的效果,那么今天我们就用Flutter实现一个掘金App上的点赞效果. 首先我们看下掘金App的点赞组成部分,有一个小手,点赞数字.点赞气泡效果,还有一个震动反馈,接下来我们一步一步实现. 知识点:绘制.动画.震动反馈 绘制小手 这里我们使用Flutter的Icon图标中的点赞小手,Icons图标

  • Android Flutter实现"斑马纹"背景的示例代码

    目录 最终效果图 实现思维 斑马纹(45°角,向左倾斜) 画笔 斑马纹坐标位置计算 圆角裁剪(如果需要) 作为背景 代码 使用处 main_page.dart 斑马纹具体实现类 zebra_stripes_back.dart 计算过程解释 由于工作中项目需求,需要将H5转换为Flutter代码. 其中的斑马纹背景需要根据接口返回的颜色来渲染,所以不能只是图片形式,无法通过decoration属性配置图片背景板. 楼主这边想到的方法就是通过 实现一个canvas绘制斑马纹类.使用Stack布局,将

  • Android自定义滑动验证条的示例代码

    本文介绍了Android自定义滑动验证条的示例代码,分享给大家,具体如下: *注:不知道为什么,h5的标签在这里没用了,所以我也只能用Markdown的语法来写了 项目地址:https://github.com/994866755/handsomeYe.seekbar.github.io 需求: 在我们的某些应用中需要滑动验证.比如说这个样子的: 刚开始我也很懵逼要怎么去弄,结果我去看了一些人的代码,有人是用自定义viewgroup去做,就是viewgroup包含滑动块和滑动条.但我觉得太麻烦,

  • Android TextView实现词组高亮的示例代码

    本文介绍了Android TextView实现词组高亮的示例代码,分享给大家,具体如下: HighlightTextView Android文本高亮控件,基于View实现. 特点 文本高亮 单词自动换行 高亮词组保持在同一行显示 效果如下: 主要逻辑: 两个 Paint 负责绘制不同的文字 在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行 protected void onDraw(Canvas canvas) { super.onDraw(canvas); float x_d

  • 基于Vue2x的图片预览插件的示例代码

    本文介绍了基于Vue2x的图片预览插件的示例代码,分享给大家,具体如下: 先来看下Demo LiveDemo 关于开发Vue插件的几种方式 (具体请移步官网)Vue官网 MyPlugin.install = function (Vue, options) { // 1. 添加全局方法或属性 Vue.myGlobalMethod = function () { // 逻辑... } // 2. 添加全局资源 Vue.directive('my-directive', { bind (el, bin

随机推荐