2013-06-24 1 views
0

앱 위젯에 뷰 플리퍼를 추가하려고합니다. 스 와이프 제스처로 2 개의 이미지 사이를 단순히 넘겨야합니다. 그러나 아무 것도 보이지 않으며 충돌도 없습니다. 나는 활동을위한 코드를 가지고 있으므로 적절한 변화로 위젯을 번역했다. 하지만 어딘가, 나는 뭔가를 놓치고있다. 안내해주십시오. 여기에 코드가 있습니다.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

내가 무엇을 하려는지 알 수 없음을 알았습니다. 그것은 실현 가능한 디자인이 아닙니다. 스 와이프 내에서 스 와이프 !! .. 가능한 경우 디자인상의 결함입니다.

관련 문제