2013-06-24 3 views
0

Я пытаюсь добавить флиппер в виджет приложения. Он должен просто переворачиваться между двумя изображениями с помощью жестов. Но ничего не отображается, и он падает. У меня есть код для активности, поэтому я перевел аналогичный для виджетов соответствующие изменения. Но где-то я чего-то упускаю. Пожалуйста, направляйте. Вот код.ViewFlipper не работает в виджетах приложений Android

public class WidgetFlipper extends AppWidgetProvider{ 

    private static final int SWIPE_MIN_DISTANCE = 120; 
    private static final int SWIPE_THRESHOLD_VELOCITY = 200; 

    private ViewFlipper vf; 
    private Context mContext; 

    private final GestureDetector detector = new GestureDetector(new MyGestureDetector()); 

    public MyGestureDetector obj = new MyGestureDetector(); 

    @SuppressLint("NewApi") 
    @Override 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int []appWidgetIds){ 

     super.onUpdate(context, appWidgetManager, appWidgetIds); 
     mContext = context; 
     RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.main); 
     vf.setOnTouchListener(new OnTouchListener() { 
      @Override 
      public boolean onTouch(final View view, final MotionEvent event) { 
       detector.onTouchEvent(event); 
       return true; 
      } 
     }); 


     views.setImageViewResource(R.id.vfShow, R.drawable.image1); 
     views.setImageViewResource(R.id.vfShow, R.drawable.image2); 
     Intent intent = new Intent ("android.appwidget.action.APPWIDGET_UPDATE"); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
     views.setOnClickPendingIntent(R.id.vfShow, pendingIntent); 

     ComponentName myWidget=new ComponentName(context, WidgetFlipper.class); 
     AppWidgetManager manager=AppWidgetManager.getInstance(context); 
     manager.updateAppWidget(myWidget, views); 

    } 


    class MyGestureDetector extends SimpleOnGestureListener { 
     @Override 
     public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, 
       float velocityY) { 
      try { 

       // right to left swipe 
       if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE 
         && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        vf.setInAnimation(AnimationUtils.loadAnimation(mContext, 
          R.anim.left_in)); 
        vf.setOutAnimation(AnimationUtils.loadAnimation(mContext, 
          R.anim.left_out)); 
        vf.showNext(); 
        return true; 
       } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE 
         && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
        vf.setInAnimation(AnimationUtils.loadAnimation(mContext, 
          R.anim.right_in)); 
        vf.setOutAnimation(AnimationUtils.loadAnimation(mContext, 
          R.anim.right_out)); 
        vf.showPrevious(); 
        return true; 
       } 

      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

      return false; 
     } 
    } 

} 
+0

Пожалуйста, ответьте кому-нибудь .. – Atihska

ответ

0

Обнаружено, что его невозможно, что я пытался сделать. Это не выполнимый проект. Проведите по салфетке! .. Это ошибка дизайна, если бы это было возможно.