5

स्क्रोलव्यू चलता है, जब मैं चाहता हूं कि मैं एक साधारण एनीमेशन चाहता हूं। मैंने कुछ समाधान की कोशिश की है, लेकिन उनमें से कोई भी पूरी तरह से/सुचारु रूप से काम नहीं करता है। अगर मैं स्क्रॉल करता हूं, तो मैं स्लाइड को एनीमेशन के साथ फैब को छिपाना चाहता हूं और अगर 2 सेकंड के बाद कुछ भी नहीं होता है तो फ्लैग स्लाइड अप एनीमेशन के साथ दिखाता है। मुझे पता है कि यह एक बुनियादी सवाल है और मैं आपकी धीरज की सराहना करता हूं।एंड्रॉइड फ़्लोटिंग एक्शन बटन एनीमेशन

अग्रिम धन्यवाद।

final ScrollView scroll = (ScrollView) v.findViewById(R.id.sw); 
scroll.setOnTouchListener(new View.OnTouchListener()){ 
    @Override 
    public boolean onTouch(View v, Motionevent event){ 
     int action = event.getAction(); 
     if (action == Motionevent.ACTION_MOVE){ 

     //slide down animation here 

     }else{ 
     new Handler().postDelayed(new Runnable(){ 
      public void run(){ 

      //slide up animation here 

      } 
     }, 2000); 
     } 
    return false; 
    } 
}); 

उत्तर

11

यहाँ a tutorial, कैसे स्क्रॉल एनीमेशन के साथ फैब बटन का उपयोग करने के लिए।

मूल रूप से

:

  1. उपयोग v22.2.1 समर्थन v4 पुस्तकालय, वहाँ एक show() और hide() विधि है कि फ्लोटिंग क्रिया बटन
  2. आप जगह चाहिए के लिए फीका-इन और फीका-बाहर एनिमेशन करता है आपके ScrollView और एक CoordinatorLayout के अंदर एफएबी।
  3. ScrollView'sid
  4. को फैब layout_anchor सेट एक कक्षा बनाएं और FloatingActionButton.Behavior वर्ग का विस्तार करने और लेआउट एक्सएमएल
  5. में फैब के layout_behavior विशेषता के लिए सेट खड़ी है की जाँच करने के लिए अपने व्यवहार वर्ग onStartNestedScroll ओवरराइड
  6. बच्चे के (एफएबी) पैरामीटर hide() पर कॉल करने के लिए अपने व्यवहार वर्ग onStopNestedScroll को ओवरराइड करें और 2 सेकंड
के बाद FAB दिखाने के लिए Runnable पर क्लिक करें

लेआउट की तरह:

<android.support.design.widget.CoordinatorLayout 
... > 
    <ScrollView 
    android:id="@+id/myList" 
    ... 
    /> 
     <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     app:layout_anchor="@id/myList" 
     app:layout_behavior="package.CustomScrollAwareBehavior" 
     ... 
     /> 
    </android.support.design.widget.CoordinatorLayout> 

मेरा सुझाव है, यह भी व्यवहार वर्ग में एक Handler बनाने के लिए फैब के show() विधि कॉल करने के। व्यवहार वर्ग (परीक्षण नहीं किया गया):

public class CustomScrollAwareBehavior extends FloatingActionButton.Behavior{ 

private Handler handler = new Handler(); 
private FloatingActionButton fab; 

public CustomScrollAwareBehavior(Context context, AttributeSet attrs) { 
    super(); 
} 

@Override 
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, 
            FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) { 
    fab = child; 
    return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL || 
      super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, 
        nestedScrollAxes); 
} 



Runnable showRunnable = new Runnable() { 
    @Override 
    public void run() { 
     fab.show(); 
    } 
}; 


@Override 
public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, 
          View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { 
    super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, 
      dyUnconsumed); 
    if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) { 
     handler.removeCallbacks(showRunnable); 
     handler.postDelayed(showRunnable,2000); 
     child.hide(); 
    } 
    } 
} 
+0

धन्यवाद !! बहुत सटीक उत्तर, मैं इस समाधान Asap कोशिश करेंगे। – tothkris

संबंधित मुद्दे