android png图片_android 保存png图片 - CSDN
  • 从头开始研究,先替换了自己不喜欢的图片,又PS了一下弄个半透明效果,但是刷完之后看了看这个半透明的背景两端不对头,变形了(大致效果见下图,图片是网上借的)非常难看。难道是自己用PS的时候出错了?检查了一遍...

    最近刷了一个美化包,有几个地方感觉不满意想自己修改一下。从头开始研究,先替换了自己不喜欢的图片,又PS了一下弄个半透明效果,但是刷完之后看了看这个半透明的背景两端不对头,变形了(大致效果见下图,图片是网上借的)非常难看。难道是自己用PS的时候出错了?检查了一遍没错。是不是还有其他的文件没修改好呢?检查完后,没有。那就奇怪了。上网搜搜吧,也无果。无意中搜索了一下9.png,结果知道了这个.9.png也是一种图片格式(解释见下文)。然后学习怎么修改。搜到了下面的教程(原文http://www.miui.com/forum.php?mod=viewthread&tid=43201&extra=page%3D1&page=1&mobile=no)稍微有些麻烦

     

    android2.3.4下拉通知栏美化主要集中于systemUI.apk文件中,里面有很多背景是9.png格式的,如:

    status_bar_titlebar_2round_rest.9.png

    status_bar_titlebar_left_pressed.9.png

    status_bar_titlebar_left_rest.9.png

    status_bar_titlebar_right_pressed.9.png

    status_bar_titlebar_right_rest.9.png

     

    以下内容为转载:

    准备工作:先下载这几个软件

    1.PNG图片压缩工具(自动转分辨率为96dpi,文件名不变)点击下载

    2.apk反编辑软件(9.png图片自动还原黑边)点击下载

    3.画黑边工具(也就是draw9patch工具了)点击下载

    4.9.png图片自动去黑边xUltimate-d9pc-x86.rar(请关闭杀毒软件,会报毒点击下载

    5. java JDK(该制作工具均需要搭建java运行环境,所以你必须下载):http://java.sun.com/javase/downloads/index.jsp(不知道你的电脑系统是什么,自己选吧)

     

    先了解一下9.png.视频讲解


     

    在处理Android中9.png图可能遇到的问题(失败例子和成功例子):

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊

     

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊

       
    废话几句:
    一、什么是9.png:
            可能做过任务栏美化的同学都会知道,在framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。
     千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会
     看不见摸不着(详情见下面具体内容)。
            9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有
     的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子
     了,哈哈,这就是9.png图片不能轻易碰的神奇所在,不过不要紧,下面看完你就会了,安卓美化大师就是你了。
           首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域
     只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被
     打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。
            当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大,
     系统加载起来当然会更加的流畅咯。
     解压具:draw9patch.zip ,执行draw9patch.bat,会出现如图:
                  

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊
     

            3、将你用PS制作的图片素材,拖到该窗口中,出现如图:
              ====可以用反编辑出来的图片做黑边模版,见最下文蓝色字体====
                

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊

      

                 解释:中间黑红条纹部分表示不能编辑,边缘白色透明框就是上述介绍的增加的一像素边框。
            4、将鼠标放在白色边框,点住左键不放拖动,会出现黑色线条如图:
            

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊

           

                  解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域
                             2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域   
                             3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域(在手机上主要是文字区域)
                             4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域(在手机上主要是文字区域)
                             没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
              5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条
              6、右边3个黑色图形区域为显示当前拉伸效果
              7、选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png,此时图片效果为:
                     

    android美化:.9.png格式图片编辑 - 80后的绵羊 - 80后的绵羊

     

                    解释:我们可以看见图片的周围多了4个黑色条,不要急这个图片还不能用,这就是原始的9.png图片,当我们进行下一步操作后,这个图片就变得正常了。

     

     

    去黑边:
    解压xUltimate-d9pc-x86.rar压缩包
     1.把预处理黑边的图片到目录example1\res\drawable-hdpi下
    2.双击xUltimate-d9pc.exe,听到电脑滴的一声,即可完成去黑边(此时的9.png图片内部加载了黑边信息)
    3.根目下会自动生成done文件,在done\example1\res\drawable-hdpi下,就是我们经过处理的9.PNG图片
    4.这个图片就是我们要美化替换的图片

     

    ======================================反编辑出来的图片作黑边模版=====================================
    解压apktool.zip 压缩包
     点安装.bat”,此时会在系统c盘生成几个文件。
            3、将你要修改的framework-res.apk(当然也可以是其他系统程序apk文件,如music.apk)重命名为update.apk,并放到c:盘根目录
     (必须放c:,因为后面执行的批处理文件编写的是在c:工作)
            4、执行c:根目录下unpack.bat,此时会在c:生成一个update的文件夹,里面的内容就是你要修改的APK文件,并且当你打开drawable-hdpi
     文件夹时你会发现里面的9.png图片变得和我们上面制作的相像了,都有4条黑边,这就是该工具将其还原了。
    =======================按AIT+TAB键,转换窗口。对照黑边模版,画的黑边速度快,准===============================

    转载自:http://lyericwang.blog.163.com/blog/static/7169017420118113624184/


    展开全文
  • android 制作9.png图片

    2014-01-06 19:42:03
     可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。 千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的...

     一、什么是9.png: 
           可能做过任务栏美化的同学都会知道,我靠,framework-res.apk\res\drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。
    千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会 
    看不见摸不着(详情见下面具体内容)。 
           9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有 
    的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子 
    了,哈哈,这就是9.png图片不能轻易碰的神奇所在,不过不要紧,下面看完你就会了,安卓美化大师就是你了。
          首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域 
    只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被 
    打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。 
           当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大, 
    系统加载起来当然会更加的流畅咯。 

    重要声明,该制作工具均需要搭建java运行环境,就是下载jdk安装,并在计算机属性中搭建环境变量,具体操作本帖就不讲了, 
    网上找一下如何搭建环境变量就有了。 

    二、如何制作9.png图片素材: 

           1、下载工具:  draw9patch.zip 该工具SDK中自带。 
           2、解压,执行draw9patch.bat,会出现如图: 


           3、将你用PS制作的图片素材,拖到该窗口中,出现如图: 



                解释:中间黑红条纹部分表示不能编辑,边缘白色透明框就是上述介绍的增加的一像素边框。 
           4、将鼠标放在白色边框,点住左键不放拖动,会出现黑色线条如图: 
                  


                 解释:1号黑色条位置向下覆盖的区域表示图片横向拉伸时,只拉伸该区域 
                            2号黑色条位置向右覆盖的区域表示图片纵向拉伸时,只拉伸该区域   
                            3号黑色条位置向左覆盖的区域表示图片纵向显示内容的区域 
                            4号黑色条位置向上覆盖的区域表示图片横向显示内容的区域 
                            没有黑色条的位置覆盖的区域是图片拉伸时保持不变(比如,如果图片的四角为弧形的时候,当图片被任意拉伸时,四角的弧形都不会发生改变)
             5、如果失误多选了部分,可按住shift键,点击鼠标左键去掉黑色条 
             6、右边3个黑色图形区域为显示当前拉伸效果 
             7、选择好区域后,点击左上file-》save 9-path,保存图片,后缀名为xxx.9.png,此时图片效果为: 



     

     解释:我们可以看见图片的周围多了4个黑色条,不要急这个图片还不能用,这就是原始的9.png图片,当我们进行下一步操作后,这个图片就变得正常了。

    去黑边:
    解压xUltimate-d9pc-x86.rar压缩包
    1.把预处理黑边的图片到目录example1\res\drawable-hdpi下

    2.双击xUltimate-d9pc.exe,听到电脑滴的一声,即可完成去黑边(此时的9.png图片内部加载了黑边信息
    3.根目下会自动生成done文件,在done\example1\res\drawable-hdpi下,就是我们经过处理的9.PNG图片
    4.这个图片就是我们要美化替换的图片



    ======================================反编辑出来的图片作黑边模版=====================================
    解压apktool.zip 压缩包
    点安装.bat”,此时会在系统c盘生成几个文件。
           3、将你要修改的framework-res.apk(当然也可以是其他系统程序apk文件,如music.apk)重命名为update.apk,并放到c:盘根目录
    (必须放c:,因为后面执行的批处理文件编写的是在c:工作)
           4、执行c:根目录下unpack.bat,此时会在c:生成一个update的文件夹,里面的内容就是你要修改的APK文件,并且当你打开drawable-hdpi
    文件夹时你会发现里面的9.png图片变得和我们上面制作的相像了,都有4条黑边,这就是该工具将其还原了。
    =======================按AIT+TAB键,转换窗口。对照黑边模版,画的黑边速度快,准===============================
    展开全文
  • android 制作.9.png图片

    2014-07-28 13:05:16
    本文转自:http://xiaoming123123.iteye.com/blog/1489253“点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png 智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的...

           本文转自:http://xiaoming123123.iteye.com/blog/1489253

          “点九”是andriod平台的应用软件开发里的一种特殊的图片形式,文件扩展名为:.9.png

      智能手机中有自动横屏的功能,同一幅界面会在随着手机(或平板电脑)中的方向传感器的参数不同而改变显示的方向,在界面改变方向后,界面上的图形会因为长宽的变化而产生拉伸,造成图形的失真变形。

        我们都知道android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真。

        OK,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效果。

        【普通拉伸和点九拉伸效果对比】

      对比很明显,使用点九后,仍能保留图像的渐变质感,和圆角的精细度。

          从中我们也可以理解为什么叫“点九PNG”,其实相当于把一张png图分成了9个部分(九宫格),分别为4个角,4条边,以及一个中间区域,4个角是不做拉升的,所以还能一直保持圆角的清晰状态,而2条水 平边和垂直边分别只做水平和垂直拉伸,所以不会出现边会被拉粗的情况,只有中间用黑线指定的区域做拉伸。结果是图片不会走样

          二.“点九”的制作方法

      方法1:使用 “draw9patch”工具绘制,流程如下

     

      1. 安装工具

          首先你需要给自己的电脑安装上java于系统的默认目录下。没有安装java的同学可以在百度搜索:jdk-6u20-windows-i586,安装包大小80M左右。 一些事

          然后使用andriod模拟器—android-sdk-windows,打开SDK/tools目录下的“draw9patch.bat”文件,出现载入窗口:

      2.导入并编辑

      将png图片拖拽到该窗口中

          如下图,自动进入编辑界面。图中介绍了每个区域的内容及功能注释。

      预览右侧的视图发现,图片的边缘处于普通拉伸状态。

      现在我们在图片边缘点击左键,绘制出黑线,即图片需要被拉伸的部分。如下图,对4条黑线做了注释。

     

      如果失误多绘的部分,可按住shift键的同时点击鼠标左键擦除)。

      如图所见,三种拉伸结果均已完美显示,已实现我们想要的拉伸效果,假设这是一个有显示文字的窗体,那么文字显示的区域,程序也会控制在黑线对应范围。 互联网的一些事

      以下这些图片,包括异性(非规则图形)图片,也可以通过点九PNG实现横纵向的自然拉伸。 互联网的一些事

      【draw9patch.bat其他功能说明】

           ② Show lock:显示不可绘区域

      ② Show patches:预览这个绘图区中的可延伸宫格(粉红色代表一个可延伸区域)

      ③ Show patches:预览视图中的高亮区域(紫色区域) 一些事

      ④ Show bad patches:在宫格区域四周增加一个红色边界,这可能会在图像被延伸时产生人工痕迹。如果你消除所有的坏宫格,延伸视图的视觉一致性将得到维护。

      3.保存和输出 互联网的一些事

      点击左上file- save,保存文件,自动生成一张后缀名为“*.9.png”格式的图片,图片上下左右各增加了1px的黑线。

      方法2:直接使用 PS等平面工具绘制,流程图如下 yixieshi

      如流程图所示,相对与方法1,只需2个步骤就可得到.9.png图片,具体步骤为:

      1. 确定切图后直接改变图片的画布大小,

          2. 手动将上下左右各增加1px

          3. 使用铅笔工具,手动绘制拉伸区域,色值必须为黑色(#000000)。 一些事

      4. 存储为web所用格式,选择png-24,储存时手动将后缀名改为.9.png

      不过这种方法的缺点是不能实时预览,判断并测试拉伸区域的准确性。

      使用此方法需要注意以下2点:

          1. 手绘的黑线拉伸区必须是#000000,透明度100%,并且图像四边不能出现半透明像素;

          2. 你的.9.png必须绘有拉伸区域的黑线; 一些事

      否则,图片不会通过android系统编译,导致程序报错。还有,有同学疑惑解压缩apk文件后,.9.png图片里的黑线怎么没了? 一些事

      那是因为andriod程序在把文件打包成apk的时候,程序会自动把*.9.png图片边缘的黑线去掉,所以解压缩apk后看到的.9.png文件是没有黑线的。

          三.使用“点九”的意义 互联网的一些事

      关于下图,经过测试发现使用普通png的显示效果出现明显的变色横纹。而.9.png图片的显示效果明显优于普通png。

      使用.9.png格式后,横纹问题基本已解决。因为对于.9.png图片,android系统程序有对其优化的算法。

      由于android手机屏幕的材质质量差距大。很多屏幕不支持16位以上的颜色显示。

      所以渲染后结果出现丢失颜色,故造成横纹显示。

          经与多款android手机对比后发现,屏幕越次的手机横纹越明显。

          而使用了*.9.png图片技术后,只需要采用一套界面切图去适配不同的分辨率,而且大幅减少安装包的大小。而且这样程序不需要专门做处理的就可以实现其拉伸,也减少了代码量和开发工作量。

    展开全文
  • .9.png是一种可以自定义拉伸特定区域的图片格式。 在Android的UI设计开发中,很多控件需要适配不同的手机分辨率进行拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。....9.png图片在图片拉...

    .9.png是一种可以自定义拉伸特定区域的图片格式。

    在Android的UI设计开发中,很多控件需要适配不同的手机分辨率进行拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它可以指定特定的区域进行拉伸而不失真,同时可以指定前景内容的显示区域。即.9.png图片的用处可以概括为以下两点:

    • .9.png图片在图片拉伸的时候特定的区域不会发生图片失真;
    • .9.png图片作为背景图的时候可以指定内容显示区域;

    一、.9.png图片与普通图片的对比

    通过上面的对比,我们可以发现,.9.png图片周围会有一条黑色的线条,这些黑色线条有什么作用呢?就是用于指定我们背景的拉伸区域或者前景内容的显示区域。

    png9.png

    • 左边黑线:纵向拉伸区域,必须要画的,控制纵向拉伸,如上图右侧第一个小图。
    • 上边黑线:横向拉伸区域,必须要画的,控制横向拉伸,如上图右侧第二个小图。
    • 右边黑线:可选,纵向内容显示区域
    • 下边黑线:可选,横向内容显示区域

    通过上面的的介绍,我们知道.9.png的四条边上的黑线有哪些用途,那么我们将介绍下关于拉伸区域的界定。

    拉伸区域

    拉伸区域.png

    • 红色框区域: 表示纵向拉伸区域,当控件背景图片需要进行纵向拉伸时,它只会拉伸红色区域,其它区域不会拉伸。
    • 绿色框区域:表示横向拉伸区域,当控件背景图片需要进行横向拉伸时,它只会拉伸绿色区域,其它区域不会拉伸。
    • 红绿相交区域:该段区域横向和纵向都会拉伸。

    前景内容显示区域

    • 红色框区域:指定横向文本显示的区域,限定文本左右能显示到的边界。
    • 蓝色框区域:指定纵向文本显示的取,限定文本上下能显示到的边界。

    二、.9.png图片的制作

    这么强大的一种图片,在我们android开发中的适配环节,起了很大的作用。那么怎么制作这种.9.png图片呢?在Android的工具中给我们提供了draw9patch.bat工具来制作.9文件。该工具目录在\android-sdk-windows\tools\draw9patch.bat
    我们直接打开draw9path.bat二进制程序,将我们需要制作的图片导入进去。然后按住鼠标左键进行划黑边,如果画错了,通过Shift+鼠标左键进行拖动取消。

    三、简单体验

    首先,我们通过简单的布局文件看看普通图片的展示效果。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
        android:layout_width="match_parent" android:layout_height="match_parent"
        tools:context="dsw.iflytek.com.pngdemo.MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@mipmap/back"
            android:layout_centerInParent="true"
            android:text="Hello World!" />
    </RelativeLayout>
    

    普通资源效果图.png

    在上面的效果图没有进行自适应,两边的边框已经被文字嵌入进去,所以我们要对图片作如下修改:

    进行拉伸处理.9资源.png

    在我们的处理中,通过对图片添加纵横向的拉伸,来保持背景的自适应。这里需要我们注意指定的拉伸区域,需要我们仔细体会。

     

    拉伸效果.png

    多行展示效果.png

    在上面我们对横向拉伸区域有了一定认识。下面看看内容拉伸区域:

    纵向显示区域.png

    在上面的.9图中,我们将整个右边线作为内容纵向显示的区域,看看效果图:

     

    上下限制内容.png

    我们可以看到,内容的显示是紧紧填满上下之间。没有间隙。

    靠近底部.png

    在来看看效果图:

    底部效果图.png

    通过上面对比,我们可以发现右侧变现控制着内容视图的显示区域的规律。

    同样底部也是一样,在开发的过程中,合理的使用.9.png文件可以很好的优化我们的资源文件,减小apk的包大小。也能进行很好的适配效果。


    作者:Andoter的学习笔记
    链接:https://www.jianshu.com/p/5996e80aee9b

    展开全文
  • Android使用apng图片

    2017-04-02 12:21:48
    一般来说动态图片使用gif...由于Android原生并不支持apng图片,可以使用第三方支持框架 https://github.com/aellerton/japng_android 使用方法也简单 播放apng Drawable d = PngAndroid.readDrawable(this, R.drawa

    一般来说动态图片使用gif,但是gif图片的缺点是有白边,因此apng格式动态图片是更好的选择

    由于Android原生并不支持apng图片,可以使用第三方支持框架 https://github.com/aellerton/japng_android


    使用方法也简单

    播放apng

    Drawable d = PngAndroid.readDrawable(this, R.drawable.rotating_logo);
    ImageView iv = (ImageView)findViewById(R.id.view_render_image);
    iv.setImageDrawable(drawable);
    if (drawable instanceof AnimationDrawable) {
        ((AnimationDrawable)drawable).start();
    }

    停止播放

    ((AnimationDrawable)drawable).stop();

    这是我使用的APNG工具类,导入japng框架后可以使用该工具类


    /**
     * Created by TonyYang on 2017/1/17.
     * APNG工具类
     * 支持同时播放多个apng
     */
    
    public class APNGUtil {
    
        private String TAG = "APNGUtil";
    
        private static APNGUtil instance;
        private Map<Integer, Drawable> drawableMap = new HashMap<>();
    
        public static APNGUtil getInstance() {
            if (instance == null) {
                instance = new APNGUtil();
            }
            return instance;
        }
    
        /**
         * 设置apng到imageview对象
         *
         * @param drawable
         * @param imageView
         */
        private void setDrawable(Drawable drawable, ImageView imageView) {
            imageView.setImageDrawable(drawable);
            if (drawable instanceof AnimationDrawable) {
                Log.i(TAG, "AnimationDrawable start");
                ((AnimationDrawable) drawable).start();
            } else {
                Log.i(TAG, "drawable no instanceof AnimationDrawable");
            }
            if (drawableMap.get(imageView.getId()) != null) {
                Log.i(TAG, "drawablemap already has drawable >>" + imageView.getId());
                drawableMap.get(imageView.getId()).setCallback(null);
                drawableMap.remove(imageView.getId());
            }
            drawableMap.put(imageView.getId(), drawable);
            Log.i(TAG, "add ! drawablemap size>>" + drawableMap.size());
        }
    
        /**
         * 播放apng图片
         *
         * @param context
         * @param path      apng图片路径
         * @param imageView 播放容器
         */
        public void start(Context context, String path, ImageView imageView) {
            try {
                if (path.contains("file://")) {
                    Log.i(TAG, "start by file path");
                    setDrawable(PngAndroid.readDrawable(context, new FileInputStream(new File(path))), imageView);
                } else {
                    Log.i(TAG, "start by assert path");
                    setDrawable(PngAndroid.readDrawable(context, context.getAssets().open(path)), imageView);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (PngException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 播放apng图片
         *
         * @param context
         * @param id        apng图片资源id
         * @param imageView 播放容器
         */
        public void start(Context context, int id, ImageView imageView) {
            try {
                Log.i(TAG, "start by res id");
                setDrawable(PngAndroid.readDrawable(context, FormatTools.getInstance().Drawable2InputStream(context.getResources().getDrawable(id))), imageView);
            } catch (PngException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 播放apng图片
         *
         * @param context
         * @param stream    apng图片数据流
         * @param imageView 播放容器
         */
        public void start(Context context, InputStream stream, ImageView imageView) {
            try {
                Log.i(TAG, "start by inputStream");
                setDrawable(PngAndroid.readDrawable(context, stream), imageView);
            } catch (PngException e) {
                e.printStackTrace();
            }
        }
    
        /**
         * 停止播放apng
         *
         * @param imageView 停止对象
         */
        public void stop(ImageView imageView) {
            if (drawableMap.get(imageView.getId()) != null) {
                if (drawableMap.get(imageView.getId()) instanceof AnimationDrawable) {
                    Log.i(TAG, "AnimationDrawable stop");
                    ((AnimationDrawable) drawableMap.get(imageView.getId())).stop();
                }
                drawableMap.get(imageView.getId()).setCallback(null);
                drawableMap.remove(imageView.getId());
                Log.i(TAG, "delete ! drawablemap size>>" + drawableMap.size());
            }
        }
    
        public void clear() {
            for (Map.Entry<Integer, Drawable> entry : drawableMap.entrySet())
                entry.getValue().setCallback(null);
            drawableMap.clear();
        }
    }

    
    

    由于框架作者并未提供Maven,Jcenter等仓库链接,需要自己将框架clone下来作为module导入到项目中使用。

    这里提供已经打包为aar的框架,将aar包放到libs文件夹,使用 compile(name: 'Japng', ext: 'aar') 导入框架

    下载地址

    展开全文
  • 最近项目中遇到一个问题:就是从网络获取应用PNG图标后,显示到GridView中,发现图标透明的地方都变成了黑色?为什么呢?  个人习惯有问题先梳理一遍代码: 一、从网络异步下载图标并显示代码   class ...
  • 前些日子应公司需求,在android手机中对图片进行合成处理,其实就是在一些图片上进行签字或者文字。...由于经过后台处理给出的图片都是PNG的,就去研究了下PNG的结构,从中找找突破口,而且在androidPNG
  • Android png转xml

    2019-02-26 14:59:38
    本文将介绍如何把png图片转换成svg矢量图,然后再生成xml文件。 1.打开png图片 File->Open->你的png图片 选择默认配置 2.转换 选中你的图片,path->Trace Bitmap (Ctrl+Shift+B) 按照图中...
  • APP需要动态从网络下载PNG图片,然后在BottomNavigationView菜单中显示出来 下载PNG图片后,显示发送背景一直是黑色的。。。 使用Glide显示PNG图片也是背景黑色 网上查了好久,没发现解决方法。。。。 实在...
  • 才知道,原来Android png命名准备的规范是这样: 小写字母,数字,下划线组成;必须是字母开头,而且每个下划线后面第一个字符必须是字母。 正确命名: sider_menu_btn_1; sider_menu_btn1;  错误命名: sider_menu...
  • android中可以使用NinePatch处理PNG图片的失真问题。效果超级棒。哈哈。
  • png 图片生成源码 development/tools/recovery_l10n/ 用imagemaic 工具convert 转换 convert test.png -colorspace gray test_ok.png
  • 但是.9.PNG确实是标准的PNG格式,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。特别说明,left和top边框中交叉部分是可拉伸部分,未选中部分是静态区域部分。...
  • android开发精美小按钮图标(png),包括各种规格大小的图片
  • Android .png和.jpg图片用什么样的方式不会造成内存溢出
  • 大家都知道同样的尺寸,png格式的图片要比jpg图片大很多,为什么android开发对png情有独钟呢? 二者对比: 1、png有透明通道,而jpg没有 2、png是无损压缩的,而jpg是有损压缩,因此png中存储的信息会很多,体积...
  • 一、矢量图简介最近在进行Android App“瘦身 ”的时候,了解到矢量图(VectorDrawable)相关概念。从Android5.0(API level 21)开始,有两个类支持矢量图:VectorDrawable和AnimatedVectorDrawable。VectorDrawable...
  • 关于alpha通道的问题 想看这篇文章 ... 素材图片 Drawable转换为Bitmap实现 public static Bitmap convertDrawable2BitmapByCanvas(Drawable drawable) { Bitmap bit
  • 1.结果展示(selector):注意:PNG图片着色要选择纯色图片,否则图片会严重失真,如下图原图:结果图:2.透明度设置:private void setBg(ImageButton imageButton) { //0~255透明度值 imageButton.getBackground()...
  • .9.png图片其实就是png格式图片,不过它比普通的png图片外围多了1px(像素)的边框,另外就是使用这种格式的图片可以实现背景自适应大小且不失真的效果。比如某些控件横竖屏切换后控件的样子就变形了,或者某些图片...
1 2 3 4 5 ... 20
收藏数 78,084
精华内容 31,233
关键字:

android png图片