代码如下 public class MainActivity extends Activity { ImageView iv_bottom,iv_top; Bitmap topImage,bottomImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { iv_bottom=(ImageView) findViewById(R.id.iv_bottom); iv_top=(ImageView) findViewById(R.id.iv_top); topImage=BitmapFactory.decodeResource(getResources(), R.drawable.a2); bottomImage=BitmapFactory.decodeResource(getResources(), R.drawable.b2); iv_top.setImageBitmap(topImage); iv_bottom.setImageBitmap(bottomImage); topImage.setPixel(topImage.getWidth()/2,topImage.getHeight()/2,Color.TRANSPARENT); System.out.println(topImage.getWidth()/2+","+topImage.getHeight()/2); iv_top.setImageBitmap(topImage); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 错误信息: 04-16 04:26:16.850: E/AndroidRuntime(791): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stripclothes/com.stripclothes.MainActivity}: java.lang.IllegalStateException 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread.access$600(ActivityThread.java:141) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.os.Handler.dispatchMessage(Handler.java:99) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.os.Looper.loop(Looper.java:137) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread.main(ActivityThread.java:5103) 04-16 04:26:16.850: E/AndroidRuntime(791): at java.lang.reflect.Method.invokeNative(Native Method) 04-16 04:26:16.850: E/AndroidRuntime(791): at java.lang.reflect.Method.invoke(Method.java:525) 04-16 04:26:16.850: E/AndroidRuntime(791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 04-16 04:26:16.850: E/AndroidRuntime(791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 04-16 04:26:16.850: E/AndroidRuntime(791): at dalvik.system.NativeStart.main(Native Method) 04-16 04:26:16.850: E/AndroidRuntime(791): Caused by: java.lang.IllegalStateException 04-16 04:26:16.850: E/AndroidRuntime(791): at android.graphics.Bitmap.setPixel(Bitmap.java:1227) 04-16 04:26:16.850: E/AndroidRuntime(791): at com.stripclothes.MainActivity.init(MainActivity.java:33) 04-16 04:26:16.850: E/AndroidRuntime(791): at com.stripclothes.MainActivity.onCreate(MainActivity.java:18) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.Activity.performCreate(Activity.java:5133) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 04-16 04:26:16.850: E/AndroidRuntime(791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175) 04-16 04:26:16.850: E/AndroidRuntime(791): ... 11 more 运行时显示topImage.setPixel(topImage.getWidth()/2,topImage.getHeight()/2,Color.TRANSPARENT);这附近出错,我仔细看了下应该没错呀 请问我哪块不对了 |
|
20分 |
因为你的bitmap:topImage是从文件中读取的,直接获得的bitmap是不可变的,不能操作。
你可以把topImage copy一份,然后对copy对象进行改变。 |
恩恩 清楚了
|