⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icons.java

📁 手机中用的MobileQQ源代码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 

import java.io.DataInputStream;
import java.io.InputStream;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class Icons
    implements Runnable
{//此类主要对图标进行操作;

    public static final int C_SystemHeadBmp_Num = 85;//好像是系统图标总数为85;

    private final int C_BMP_Size = 112;//系统图标尺寸为112字节;
    private int bmpLoaded;//存放成功加载的图标数;
    private Thread thread;//线程对像;
    private int palette[] = {
        0, 0x800000, 32768, 0x808000, 128, 0x800080, 32896, 0x808080, 0xc0c0c0, 0xff0000, 
        65280, 0xffff00, 255, 0xff00ff, 65535, 0xffffff
    };//定义一个16色的设色板;
    private Image iconImg[];//存放成功加载的图标,一共85个;
    Image imgHead[];//存放在线、离线、离开三个图标;
    Image imgSys[];//存放系统消息、离开、隐身三个图标;

    public Icons()
    {//构造函数,对一些变量进行实始化;
        bmpLoaded = 0;
        thread = null;
        imgHead = new Image[4];
        imgSys = new Image[4];
        iconImg = new Image[85];
    }

    public void init()
    {//初始化进程;
        loadScreenBmp();
        loadSysBmp();
        thread = new Thread(this);
        thread.setPriority(1);
        thread.start();
    }

    public void run()
    {//运行接口函数;装入/bmp.bin文件,该文件中存放了85个图标,每个图标占用112字节;
        byte abyte0[] = new byte[112];
        try
        {
            InputStream inputstream = getClass().getResourceAsStream("/bmp.bin");
            DataInputStream datainputstream = new DataInputStream(inputstream);
            for(int i = 0; i < 85; i++)
            {
                datainputstream.read(abyte0, 0, 112);
                Image image = Image.createImage(14, 14);
                Graphics g = image.getGraphics();
                drawIcon(abyte0, g, 0, 0, palette);
                iconImg[i] = image;
                bmpLoaded++;//成功加载的图标数;
            }

        }
        catch(Exception exception) { }
    }

    private void drawIcon(byte abyte0[], Graphics g, int i, int j, int ai[])
    {//在i,j处绘制一个ICON到Graphics对像中去,该ICON为14*14的16色的图像,即每点
     //的颜色值为4位,一字节可存放两个点的颜色值;因此共需98字节的内存来存放一个ICON;
     //该ICON是从底行由左往右开始绘起;
     //参数说明:byte abyte0[]:图像数据
     //          Graphics g, 输出对像
     //          int i, int j, 座标
     //          int ai[], 设色板;
        int i1 = 0;
        for(int k = j + 13; k >= j; k--)
        {
            for(int l = i; l < i + 14;)
            {
                int j1 = (abyte0[i1] & 0xf0) >> 4;
                if(j1 < 15)
                {
                    g.setColor(ai[j1]);
                    g.drawLine(l, k, l, k);
                }
                l++;
                j1 = abyte0[i1] & 0xf;
                if(j1 < 15)
                {
                    g.setColor(ai[j1]);
                    g.drawLine(l, k, l, k);
                }
                l++;
                i1++;
            }

            i1++;
        }

    }

    private void loadScreenBmp()
    {//装入在线、离线、离开图像(1-1.png、1-2.png、1-3.png)到imgHead数组中去;
        Object obj = null;
        for(int i = 0; i < 3; i++)
        {
            String s = "/1-" + (i + 1) + ".png";
            imgHead[i] = PkgTools.createImage(s);
        }

    }

    private void loadSysBmp()
    {//装入系统消息、离开、隐身图像(2sys.png、3sys.png、4sys.png)到imgSys数组中去;
        Object obj = null;
        for(int i = 1; i < 4; i++)
        {
            String s = "/" + (i + 1) + "sys.png";
            imgSys[i] = PkgTools.createImage(s);
        }

        imgSys[0] = imgHead[0];
    }

    public Image getSysImage(int i)
    {//取得系统图标
        return imgSys[i];
    }

    public Image getHeadImage(int i, int j)
    {//根据状态取得图标句柄;
        int k = i / 3;
        switch(j)
        {
        case 20: // '\024'
        case 40: // '('
            return imgHead[1];

        case 30: // '\036'
            return imgHead[2];

        default:
            return imgHead[1];

        case 10: // '\n'
            break;
        }
        if(k < bmpLoaded)
            return iconImg[k];
        if(j == 10)
            return imgHead[0];
        else
            return imgHead[1];
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -