سؤال

أحاول استخدام FineFlipper وجعله يتصرف مثل الشاشة الرئيسية (سوف يتحرك التصميم بإصبعك). ألق نظرة على هذا على سبيل المثال. أرغب في القيام بذلك باستخدام FineFlipper الذي يحتوي فقط على طفلين ، لذا يجب إظهار العرض المعاكس على جانبي العرض الحالي اعتمادًا على الطريقة التي يحرك المستخدم بإصبعها. يعمل هذا الرمز ولكن فقط لاتجاه واحد في وقت واحد. هذا في Ontouchevent.

case MotionEvent.ACTION_MOVE: 

leftView.setVisibility(View.VISIBLE);
rightView.setVisibility(View.VISIBLE);
// move the current view to the left or right.
currentView.layout((int) (touchEvent.getX() - oldTouchValue),
    currentView.getTop(),
    (int) (touchEvent.getX() - oldTouchValue) + 320,
    currentView.getBottom());

// place this view just left of the currentView
leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
    currentView.getLeft(), leftView.getBottom());

// place this view just right of the currentView
rightView.layout(currentView.getRight(), rightView.getTop(), 
    currentView.getRight() + 320, rightView.getBottom());

أي من الخطين السفليين اللذين أضعهما في آخر اتجاه سيعمل بشكل صحيح ولكن الآخر لن يعمل.

إليكم كيف قمت بتعيين LeftView و RightView:

final View currentView = myFlipper.getCurrentView();
final View leftView, rightView;
if (currentView == meView) {
    Log.d("current layout: ", "me");
    leftView = youView;
    rightView = youView;
} else if (currentView == youView) {
    Log.d("current layout: ", "you");
    leftView = meView;
    rightView = meView;
} else {
    leftView = null;
    rightView = null;
}

هل سيكون من الممكن إعداده بحيث يتم عرض العرض نفسه على جانبي العرض الحالي؟

هل كانت مفيدة؟

المحلول

شكرا Stealthcopter

هذا العمل هنا هو الرمز الجديد إذا كان أي شخص مهتمًا.

        if (touchEvent.getX() < oldTouchValue){
             // place this view just right of the currentView
            rightView.layout(currentView.getRight(), rightView.getTop(), 
                            currentView.getRight() + 320, rightView.getBottom());

        }else if (touchEvent.getX() > oldTouchValue) {
            // place this view just left of the currentView
            leftView.layout(currentView.getLeft() - 320, leftView.getTop(),
                            currentView.getLeft(), leftView.getBottom());

        }

لقد قمت أيضًا بنقل مكالمات setVibility () إلى motionevent.action_down في محاولة للتخلص من بعض الوفرة. ساعد هذا ولكن ما زلت أحصل قليلاً.

نصائح أخرى

ربما ليس لدي اقتراح بناء للغاية ، ولكن إذا كنت تريد أن تتصرف مثل الشاشة الرئيسية ، فلماذا لا تريد أن تنظر إلى SRC من ذلك, ، وتعديلها لاحتياجاتك؟

للتخلص من الخفقان ، مجموعة setVisibility(View.INVISIBLE) في MotionEvent.ACTION_DOWN. القيمة الافتراضية "ذهب" في عرض. هذا يعني أنه لا يمكنك ضبط Layout() على الرأي حتى يصبح "مرئيًا" أو "غير مرئي". لذلك في ثلاث خطوات:

  1. وضع رؤية على غير مرئي على الرأي
  2. تعيين تخطيط () على العرض
  3. وضع رؤية مرئية على الرأي

إذا فهمت طلبك ، فيجب الآن تنفيذ هذا التأثير باستخدام أ عرض النداء

يشبه هذا:

enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top