2012-07-30 12 views
6

kindda अजीब स्थिति में सहभागी दृश्य के बाद परिवर्तन नहीं करता है ...क्लिक के प्रति संवेदनशील क्षेत्र एनिमेट और एंड्रॉयड

मैं एक imageView जो इसके साथ जुड़े एक क्लिक इंटरैक्शन है की है।

कोड में मैं एक एनीमेशन के माध्यम से ImageView की स्थिति बदलता हूं।

लेकिन जब एनीमेशन क्लिक करने योग्य क्षेत्र को समाप्त करता है तब भी छवि दृश्य के मूल स्थान पर है (मैं वास्तव में उस क्षेत्र को टैप कर सकता हूं और क्लिक को संभाला जा सकता हूं)।

कुछ शोध किया गया था, ऐसा लगता है कि एनीमेशन केवल दृश्य पिक्सल को चारों ओर ले जाता है, दृश्य मूल रूप से वहां रहता है।

एंड्रॉइड की आलोचना के रूप में - यह एक सहज डिजाइन/कार्यान्वयन नहीं है। यह के अनुरूप नहीं है "आप जो देखते हैं वह आपको मिलता है" मानदंड।

और मेरे सवाल

वहाँ एक रास्ता (दो अलग अलग ImageViews के बीच टॉगल को छोड़कर) जहां दृश्य पिक्सल हैं क्लिक करने योग्य क्षेत्र चाल बनाने के लिए है?

मेरा लेआउट और एनीमेशन एक्सएमएल संरचनाएं निम्नानुसार हैं।

लेआउट:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/keywords_layer" 
    android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:layout_margin="0dp" 
android:padding="0dp" 
android:orientation="vertical" 
android:visibility="gone" 
> 
<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="35dp" 
    > 
    <ImageView 
     android:layout_width="fill_parent" 
     android:layout_height="35dp" 
     android:layout_centerInParent="true" 
     android:adjustViewBounds="false" 
     android:scaleType="fitXY" 
     android:src="@drawable/keyword_bar_handle" 
    /> 
    <ImageView 
     android:id="@+id/bar_handle" 
     android:layout_width="45dp" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:adjustViewBounds="false" 
     android:scaleType="fitXY" 
    /> 
</RelativeLayout> 
<HorizontalScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="@dimen/browser_address_bar_1_5_height" 
    android:layout_margin="0dp" 
    android:padding="0dp" 
    android:background="@drawable/keyword_bar_bg" 
    android:scrollbars="none" 
    > 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="@dimen/browser_address_bar_1_5_height" 
     android:layout_margin="0dp" 
     android:padding="0dp" 
    /> 
</HorizontalScrollView> 

एनिमेशन:

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:fillEnabled="true" 
    android:fillAfter="true"> 
<translate 
    android:fromYDelta="60" 
    android:toYDelta="0" 
    android:duration="300" 
/> 
    </set> 

यहाँ लेआउट स्क्रीन के नीचे करने के लिए गठबंधन और जरूरत के लिए जा सुचारू रूप से चालू किए जाने पर - छिपा या दिखाया गया है। "bar_handle" ImageView टॉगलिंग को संभालता है। "bar_handle" एनिमेटेड संरचना के अंदर है, इसलिए यह इसके साथ चलता है।

किसी भी मदद के लिए धन्यवाद।

उत्तर

2

देखें एनीमेशन वास्तव में देखने की स्थिति में परिवर्तन नहीं करते, तो आप वास्तव में स्थिति को बदलना चाहते हैं, यह अपने आप स्क्रॉल

उदाहरण के लिए

इस्तेमाल करने की कोशिश: उपयोग scrollTo, scrollBy या अगर आप चाहते हैं यह स्वचालित रूप से स्क्रॉल करता है, आप ऐसा करने में आपकी सहायता के लिए स्क्रोलर का उपयोग कर सकते हैं।

+1

धन्यवाद @Changwei याओ। शायद यह कई विचारों को बनाए रखने के बिना पूरा करने का एकमात्र तरीका है, लेकिन किसी आइटम को स्क्रॉल करने से दृश्य आगे बढ़ जाएगा जैसे एनीमेशन परिणाम पूर्ववत होना आवश्यक है। इंजीनियरिंग से थोड़ा सा लगता है। –

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