2011-01-05 12 views
-1

これは、次のエラーにアンドロイドでアニメーション中に強制終了する際のエラー?

package com.viewslide; 

import java.io.File; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.provider.MediaStore; 
import android.view.ContextMenu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class slideview extends Activity { 

    private Animation Animationtype; 
    /** Called when the activity is first created. */ 
    int i=0; 
    ImageView img1,img2; 
    int PICK_REQUEST_CODE=0; 
    MyCount counter; 
    Uri startDir1; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Animationtype= AnimationUtils 
    .loadAnimation(this, R.anim.slide_top_to_bottom); 
     openSdcard(); 
     counter=new MyCount(2000,1000); 
     } 

    public void openSdcard() 
    { 
    Intent intent = new Intent(); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     Uri startDir1= Uri.fromFile(new File("/")); 
     intent.setDataAndType(startDir1, "vnd.android.cursor.dir/lysesoft.andexplorer.file"); 
     intent.putExtra("browser_filter_extension_whitelist", "*.txt,*.mp3,*.jpg"); 
     intent.putExtra("explorer_title", "Select a file"); 
     // Optional colors 
     intent.putExtra("browser_title_background_color", "440000AA"); 
     intent.putExtra("browser_title_foreground_color", "FFFFFFFF"); 
     intent.putExtra("browser_list_background_color", "66000000"); 
     intent.putExtra("browser_list_fontscale", "120%"); 
     intent.putExtra("browser_list_layout", "1"); 
    //if(Uri startDir1== Uri.fromFile(new File("/"))) 
    // if(startDir1==Uri.fromFile(new File("/sdcard/DCIM"))) 
    // { 
    startActivityForResult(intent,PICK_REQUEST_CODE); 
    onActivityResult(PICK_REQUEST_CODE, PICK_REQUEST_CODE, intent); 
    //} 
    } 


    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     super.onActivityResult(requestCode, resultCode,intent); 

      if (requestCode == PICK_REQUEST_CODE) 
      { 
      if (resultCode == RESULT_OK) 
      { 
      StartTimer(); 
      } 
      } 
    } 

     public void slideshow() 
     { 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
     Cursor cursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, filePathColumn, null, null, null); 
     int count= cursor.getCount(); 
     if(i<count-1){  

     cursor.moveToPosition(i); 
     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     String filePath = cursor.getString(columnIndex); 
     cursor.close(); 
     BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inTempStorage = new byte[16*1024]; 

     // bitmapImage = BitmapFactory.decodeFile(path,opt); 
     Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath,options); 
     img1 = (ImageView)findViewById(R.id.img1); 

     img1.setImageBitmap(yourSelectedImage); 

     img1.startAnimation(Animationtype); 
     registerForContextMenu(img1); 
     i=i+1; 
    } 
     else 
     { 
      img1.setImageBitmap(null); 
     // Toast.makeText(getBaseContext(), "End of SlideShow", 1000).show(); 

     } 
    } 

public void StartTimer(){ 
    counter.start(); 
     } 

private void pause() { 
counter.cancel(); 
} 

private void resume() { 
counter = new MyCount(2000,1000); 
counter.start(); 
} 

private class MyCount extends CountDownTimer { 

public MyCount(long millisInFuture, long countDownInterval) { 
    super(millisInFuture, countDownInterval); 
    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onFinish() { 
    // TODO Auto-generated method stub 
    slideshow(); 
    StartTimer(); 
    } 
    @Override 
    public void onTick(long millisUntilFinished) { 
    // TODO Auto-generated method stub 
    } 
     } 

public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     pause(); 
     menu.setHeaderTitle("Animation"); 
     menu.add(0, v.getId(), 0, "hyperspace_jump"); 

     menu.add(0, v.getId(), 0, "shake"); 
     menu.add(0, v.getId(), 0, "rotate"); 
     menu.add(0, v.getId(), 0, "magnify"); 
     menu.add(0, v.getId(), 0, "zoom_enter"); 
     menu.add(0, v.getId(), 0, "zoom_exit"); 
     menu.add(0, v.getId(), 0, "hyperspace_in"); 
     } 

public boolean onContextItemSelected(MenuItem item){ 

    if("hyperspace_jump".equals(item.getTitle())) 

      { 
      resume(); 
      slideshow(); 
      Animationtype= AnimationUtils 
      .loadAnimation(this, R.anim.hyperspace_jump); 
      img1.startAnimation(Animationtype); 
      } 

     else if("shake".equals(item.getTitle())) 
      { 
     resume(); 
      slideshow(); 
      Animationtype= AnimationUtils 
       .loadAnimation(this, R.anim.shake); 
       img1.startAnimation(Animationtype); 
      } 
     else if("rotate".equals(item.getTitle())) 
       { 
     resume(); 
      slideshow(); 
      Animationtype= AnimationUtils 
       .loadAnimation(this, R.anim.rotate); 
       img1.startAnimation(Animationtype); 
      }else if("magnify".equals(item.getTitle())) 
       { 
        resume(); 
       slideshow(); 
       Animationtype= AnimationUtils 
        .loadAnimation(this, R.anim.magnify); 
        img1.startAnimation(Animationtype); 
       } 
        else if("zoom_enter".equals(item.getTitle())) 

        { 
        resume(); 
        slideshow(); 
        Animationtype= AnimationUtils 
        .loadAnimation(this, R.anim.zoom_enter); 
        img1.startAnimation(Animationtype); 
        } 
        else if("zoom_exit".equals(item.getTitle())) 
        { 
        resume(); 
        slideshow(); 
        Animationtype= AnimationUtils 
        .loadAnimation(this, R.anim.zoom_exit); 
        img1.startAnimation(Animationtype); 
        } 
        else if("hyperspace_in".equals(item.getTitle())) 
        { 
        resume(); 
        slideshow(); 
        Animationtype= AnimationUtils 
        .loadAnimation(this, R.anim.hyperspace_in); 
        img1.startAnimation(Animationtype); 
        } 
        else 
        { 
        return false; 
        } 
     return true; 
    } 


} 

と私は

E/AndroidRuntime(26250): FATAL EXCEPTION: main 
E/AndroidRuntime(26250): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
E/AndroidRuntime(26250): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
E/AndroidRuntime(26250): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:459) 
E/AndroidRuntime(26250): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:271) 
E/AndroidRuntime(26250): at com.viewslide.slideview.slideshow(slideview.java:91) 
E/AndroidRuntime(26250): at com.viewslide.slideview$MyCount.onFinish(slideview.java:131) 
E/AndroidRuntime(26250): at android.os.CountDownTimer$1.handleMessage(CountDownTimer.java:118) 
E/AndroidRuntime(26250): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(26250): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(26250): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime(26250): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(26250): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(26250): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
E/AndroidRuntime(26250): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
E/AndroidRuntime(26250): at dalvik.system.NativeStart.main(Native Method) 
W/ActivityManager(18078): Force finishing activity com.viewslide/.slideview 

ありますエラーが発生してAndroidとIamはアニメーションの私のコードでは、すぐにuは事前にUを 感謝できるよう助けてください

答えて

関連する問題