CACHE
 是在显示之后才有,也就是说不能在onCreate里 用CACHE。建议这么写:
mCenter.buildDrawingCache();
mCenter.setDrawingCacheEnabled(true);
Bitmap b1 = mCenter.getDrawingCache(); 
mCenter.setDrawingCacheEnabled(false);
mCenter.destroyDrawingCache();

解决方案 »

  1.   


    谢谢,我按照你给我的方法改成了这样:
    public class MainActivity extends Activity {
    protected static Bitmap bmp = null;
    private LinearLayout ll;
    private Button bt; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("1***", MainActivity.bmp + "");
    // 该线性布局中有两个ImageView、一个TextView
    ll = (LinearLayout) findViewById(R.id.ll);
    bt = (Button) findViewById(R.id.next);
    bt.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    ll.buildDrawingCache();
    ll.setDrawingCacheEnabled(true);
    bmp = ll.getDrawingCache();// 将线性布局中的整个内容转换为位图
    Log.d("2***", MainActivity.bmp + "");
    ll.setDrawingCacheEnabled(false);
    ll.destroyDrawingCache();
    Intent it = new Intent(MainActivity.this, TwoActivity.class);
    startActivity(it);
    }
    });
    }
    }Log日志里面也显示有对象了
    但是跳往下一界面时,我明明设置了iv.setImageBitmap(MainActivity.bmp);却仍旧是白板。这该如何处理啊??

    public class TwoActivity extends Activity { @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_two);
    ImageView iv = (ImageView) findViewById(R.id.iv);
    iv.setImageBitmap(MainActivity.bmp);
    Log.d("3***", MainActivity.bmp + "");
    } @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.two, menu);
    return true;
    }}
      

  2.   


    谢谢,我按照你给我的方法改成了这样:
    public class MainActivity extends Activity {
    protected static Bitmap bmp = null;
    private LinearLayout ll;
    private Button bt; @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Log.d("1***", MainActivity.bmp + "");
    // 该线性布局中有两个ImageView、一个TextView
    ll = (LinearLayout) findViewById(R.id.ll);
    bt = (Button) findViewById(R.id.next);
    bt.setOnClickListener(new OnClickListener() { @Override
    public void onClick(View v) {
    ll.buildDrawingCache();
    ll.setDrawingCacheEnabled(true);
    bmp = ll.getDrawingCache();// 将线性布局中的整个内容转换为位图
    Log.d("2***", MainActivity.bmp + "");
    ll.setDrawingCacheEnabled(false);
    ll.destroyDrawingCache();
    Intent it = new Intent(MainActivity.this, TwoActivity.class);
    startActivity(it);
    }
    });
    }
    }Log日志里面也显示有对象了
    但是跳往下一界面时,我明明设置了iv.setImageBitmap(MainActivity.bmp);却仍旧是白板。这该如何处理啊??

    public class TwoActivity extends Activity { @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_two);
    ImageView iv = (ImageView) findViewById(R.id.iv);
    iv.setImageBitmap(MainActivity.bmp);
    Log.d("3***", MainActivity.bmp + "");
    } @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.two, menu);
    return true;
    }}
    destroyDrawingCache 先去掉。我这么写是因为我取到之后就使用完了,中间使用bitmap的代码我去掉了。要是下个界面的话,把bitmap 传递过去就好了,要是传递过去为null,就先copy到native 层的内存里。要用的时候再取就行了。
      

  3.   

    谢谢啦 搞定了!原来只需要这样                    mCenter.buildDrawingCache();
                        mCenter.setDrawingCacheEnabled(true);
                        Bitmap b1 = mCenter.getDrawingCache(); 
                        //mCenter.setDrawingCacheEnabled(false);
                        //mCenter.destroyDrawingCache();
    把这后面的屏蔽就行了