0
배경을 설정하고 다른 이미지가 맨 위에 배치 된 프레임 레이아웃을 저장하고 싶습니다.
onclick 버튼을 사용하면 '강제 종료 오류'가 나타납니다. 오류 로그를 다음layed 이미지를 sdcard에 저장
FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
File root = Environment.getExternalStorageDirectory();
File file = new File(root,"androidlife.jpg");
Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), mainLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
mainLayout.draw(c);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
if (fos != null) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
됩니다 :
나는 다음과 같은 코드를 사용하고
FrameLayout mainLayout = (FrameLayout) findViewById(R.id.imageView);
그리고 R. :
05-03 00:39:37.281: W/dalvikvm(445): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
05-03 00:39:37.301: E/AndroidRuntime(445): FATAL EXCEPTION: main
05-03 00:39:37.301: E/AndroidRuntime(445): java.lang.ClassCastException: android.widget.ImageView
05-03 00:39:37.301: E/AndroidRuntime(445): at org.example.touch.Touch$1.onClick(Touch.java:60)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.view.View.performClick(View.java:2408)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.view.View$PerformClick.run(View.java:8816)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Handler.handleCallback(Handler.java:587)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Handler.dispatchMessage(Handler.java:92)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.os.Looper.loop(Looper.java:123)
05-03 00:39:37.301: E/AndroidRuntime(445): at android.app.ActivityThread.main(ActivityThread.java:4627)
05-03 00:39:37.301: E/AndroidRuntime(445): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 00:39:37.301: E/AndroidRuntime(445): at java.lang.reflect.Method.invoke(Method.java:521)
05-03 00:39:37.301: E/AndroidRuntime(445): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 00:39:37.301: E/AndroidRuntime(445): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 00:39:37.301: E/AndroidRuntime(445): at dalvik.system.NativeStart.main(Native Method)
.... 그것은 .... 내가 FrameLayout이 mainLayout = (FrameLayout이) findViewById를 (R.id.frame)에 잘못된 refernce를 변경했다; 내 xml 파일에 FrameLayout을 사용하기 때문에 ** ImageView **로 변경 될 수 없습니다. – Numair