本帖最后由 vb748 于 2012-11-05 21:25:27 编辑

解决方案 »

  1.   

    感觉你这里面确实有点问题,你的View调用onDraw的频率是相当高的,你知道只要界面有任何变化都会触发这个事件,而你在onDraw里面却有GameView.drawImage(canvas, mBitQQ2, (320-BitQQwidth)/2, 10);这样的方法,也就是说不停的去刷新不停的创建Bitmap,我介意你做下缓存
      

  2.   

    btw,还有别的比较高效的bitmap缩放方法吗?
    bow~~
      

  3.   

    直接用Canvas.drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)方法画就好了没必要每次缩放都生成一张新图
      

  4.   

    先抓图图片的大小,再缩放,我的代码是根据宽度在缩放为56,看自己程序的需求:
    public static Drawable xianshi(String lujing){
    Options options = new Options();
    //解析得到图片
            options.inJustDecodeBounds = true;
            Bitmap bitmap = BitmapFactory.decodeFile(lujing, options);//获取图片信息
            int srcWidth = options.outWidth;
            options.inJustDecodeBounds = false;
            int be = 0;
            be = (int) Math.round(((((double) srcWidth) / ((double) 56))));//获取缩放比列
            options = new Options();
            options.inSampleSize = be;
            bitmap = BitmapFactory.decodeFile(lujing, options);//获取缩放后的图片
            Drawable d = new BitmapDrawable(bitmap);//生成Drawable对象
            return d;
    }