本文用来记录一些Android 操作图片的方法,方便查看。

1.将Drawable转化为Bitmap

  1. public static Bitmap drawableToBitmap(Drawable drawable){
  2. int width = drawable.getIntrinsicWidth();
  3. int height = drawable.getIntrinsicHeight();
  4. Bitmap bitmap = Bitmap.createBitmap(width, height,
  5. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  6. : Bitmap.Config.RGB_565);
  7. Canvas canvas = new Canvas(bitmap);
  8. drawable.setBounds(0,0,width,height);
  9. drawable.draw(canvas);
  10. return bitmap;
  11. }

2.获得圆角图片的方法

  1. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){
  2. Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
  3. .getHeight(), Config.ARGB_8888);
  4. Canvas canvas = new Canvas(output);
  5. final int color = 0xff424242;
  6. final Paint paint = new Paint();
  7. final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
  8. final RectF rectF = new RectF(rect);
  9. paint.setAntiAlias(true);
  10. canvas.drawARGB(0, 0, 0, 0);
  11. paint.setColor(color);
  12. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
  13. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
  14. canvas.drawBitmap(bitmap, rect, rect, paint);
  15. return output;
  16. }

3.获得带倒影的图片方法

    1. public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){
    2. final int reflectionGap = 4;
    3. int width = bitmap.getWidth();
    4. int height = bitmap.getHeight();
    5. Matrix matrix = new Matrix();
    6. matrix.preScale(1, -1);
    7. Bitmap reflectionImage = Bitmap.createBitmap(bitmap,
    8. , height/2, width, height/2, matrix, false);
    9. Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
    10. Canvas canvas = new Canvas(bitmapWithReflection);
    11. canvas.drawBitmap(bitmap, 0, 0, null);
    12. Paint deafalutPaint = new Paint();
    13. canvas.drawRect(0, height,width,height + reflectionGap,
    14. deafalutPaint);
    15. canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
    16. Paint paint = new Paint();
    17. LinearGradient shader = new LinearGradient(0,
    18. bitmap.getHeight(), 0, bitmapWithReflection.getHeight()
    19. + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
    20. paint.setShader(shader); //important
    21. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
    22. canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
    23. + reflectionGap, paint);
    24. return bitmapWithReflection;
    25. }

android中图片倒影、圆角效果重绘的更多相关文章

  1. Android中实现ListView圆角效果[转]

    本文演示如何Android中实现ListView圆角效果. 无论是网站,还是APP,人们都爱看一些新颖的视图效果.直角看多了,就想看看圆角,这几年刮起了一阵阵的圆角设计风:CSS新标准纳入圆角元素,特 ...

  2. 关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析

    原文:关于Android中图片大小.内存占用与drawable文件夹关系的研究与分析 相关: Android drawable微技巧,你所不知道的drawable的那些细节 经常会有朋友问我这个问题: ...

  3. Android中图片占用内存的计算

    Android中图片占用内存的计算 原文链接 http://blog.sina.com.cn/s/blog_4e60b09d01016133.html   在Android开发中,我现在发现很多人还不 ...

  4. Android 中图片压缩分析(上)

    作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情 ...

  5. android中设置Animation 动画效果

    在 Android 中, Animation 动画效果的实现可以通过两种方式进行实现,一种是 tweened animation 渐变动画,另一种是 frame by frame animation ...

  6. android中图片的三级缓存cache策略(内存/文件/网络)

    实现图片缓存也不难,需要有相应的cache策略.这里我采用 内存-文件-网络 三层cache机制,其中内存缓存包括强引用缓存和软引用缓存(SoftReference),其实网络不算cache,这里姑且 ...

  7. Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

    原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteAr ...

  8. android实现图片平铺效果&WebView多点触控实现缩放

    1.图片平铺效果实现非常简单,只要在xml中添加一个 android:tileMode的属性就可以了.首先在drawable文件夹中添加自己的my.xml文件.代码: Java代码 <?xml ...

  9. Android实现图片轮显效果——自定义ViewPager控件

    一.问题概述 使用ViewPager控件实现可横向翻页.水平切换图片等效果,但ViewPager需要手动滑动才能切换页面,图片轮显效果的效果本质上就是在ViewPager控件的基础上让它能自动的进行切 ...

随机推荐

  1. jquery快速清除复选框、单选框的选中

    $(":checked").attr("checked", "");

  2. [Poi] Setup PostCSS and Tailwind with Poi

    This lesson walks through setting up a Poi project using PostCSS and the popular Tailwind library fo ...

  3. Python使用Redis实现一个简单作业调度系统

    Python使用Redis实现一个简单作业调度系统 概述 Redis作为内存数据库的一个典型代表,已经在非常多应用场景中被使用,这里仅就Redis的pub/sub功能来说说如何通过此功能来实现一个简单 ...

  4. 负载均衡-lvs

    常用的负载均衡技术比较DNS 轮询DNS本身的机制不再赘述,这里主要看一看基于DNS的负载均衡,其大致原理很清楚,DNS系统本身支持同一个域名映射到多个ip (A记录),例如 这样每次向DNS系统询问 ...

  5. js library 集合

    js library 集合 查看已经开源的js library https://cdnjs.com/

  6. SQL SERVER 新增表、新增字段、修改字段 判断表是否存在

    // 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory')) ...

  7. RAID信息存放位置!

    今天偶然的机会,客户打电话说有一台DELL T110的服务器换了主板电池RAID信息没了进不去系统了,问我怎么处理,T110的RAID是主板集成的S100的RAID卡(算是软RAID,通过BIOS配置 ...

  8. 阿里&163 yum源

    站点:https://opsx.alibaba.com/mirror #阿里云base cat /etc/yum.repos.d/alibase.repo [rhel7] name=ali-base ...

  9. 通用查询实现方案(可用于DDD)[附源码] -- 简介

    原文:通用查询实现方案(可用于DDD)[附源码] -- 简介 [声明] 写作不易,转载请注明出处(http://www.cnblogs.com/wiseant/p/3985353.html).   [ ...

  10. 【Henu ACM Round#15 D】Ilya and Escalator

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 概率DP; 设f[i][j]表示前i个单位时间,j个人进入房间的概率是多少 然后想一下和i-1秒的时候要怎么转移就可以了. i-1秒 ...