-1

私のアプリは、いくつかのバージョンといくつかのアドバイスで動作しません。

例えば:

  • サムスン4.04-作品
  • Motorola4.04-壊れた
  • サムスン2.3.6-作品
  • LG2.2.2-壊れた

誰かが何が起こっているのか考えているなら、教えてください。それはとても単純なことだと思います。

私のマニフェストは、min sdk=4およびmax=16を宣言しています。

ViewFlipperを使用してレイアウトを変更しますが、これが問題である可能性があります。アプリは、この部分に到達したときにのみ閉じます。

クラッシュログがないことをお詫びします。

public class ImagesActivity extends Activity {

private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
private ViewFlipper mFlipper;
private Animation Animation, Animation2, Animation3, Animation4;
private Random randomGenerator = new Random();

@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.imagesview);

    final LinearLayout myLayout = (LinearLayout) findViewById(R.id.images_view);

    //declaração ViewFlipper das telas
    mFlipper = (ViewFlipper) findViewById(R.id.mFlipper1);

     //declaração das var para o evento Shake
     mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
     mSensorListener = new ShakeEventListener(); 

     //declaração anim 1 - Slide from left
     Animation = (Animation) AnimationUtils.loadAnimation(this, R.anim.slideleft);
     Animation.setFillAfter(true);

     //declaração anim 2 - Slide from right
     Animation2 = (Animation) AnimationUtils.loadAnimation(this, R.anim.slideright);
     Animation.setFillAfter(true);

     //declaração anim 3 - Slide from down
     Animation3 = (Animation) AnimationUtils.loadAnimation(this, R.anim.slideup);
     Animation.setFillAfter(true);

     //declaração anim 4 - Slide from up
     Animation4 = (Animation) AnimationUtils.loadAnimation(this, R.anim.slidedown);
     Animation.setFillAfter(true);

     //Event Shake para execução das telas random
     mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
          public void onShake() {
              int random;
              Random RandomView = new Random();
                 int nextViewIndex = RandomView.nextInt(18);
                 while (nextViewIndex == mFlipper.getDisplayedChild()) {
                     nextViewIndex = RandomView.nextInt(18);
                 }
                random = randomGenerator.nextInt(4);

                if(random ==1)
                    myLayout.startAnimation(Animation);
                else if(random ==2)
                    myLayout.startAnimation(Animation2);
                else if(random ==3)
                    myLayout.startAnimation(Animation3);
                else
                    myLayout.startAnimation(Animation4);

                 mFlipper.setDisplayedChild(nextViewIndex);
          }
          });
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
  public void onResume() {
    super.onResume();
    mSensorManager.registerListener(mSensorListener,
        mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
        SensorManager.SENSOR_DELAY_UI);
  }

  @Override
  public void onPause() {
    mSensorManager.unregisterListener(mSensorListener);
    super.onStop();
  }
}
4

1 に答える 1

1

これをしないでください

private Animation Animation, Animation2, Animation3, Animation4;

より良い名前を使用して、18 の異なるビューがあると確信していますか?

レイアウトではなく、ViewFlipper でアニメーションを設定する必要もあります。

于 2013-03-06T03:58:19.073 に答える