2015-01-08 7 views
7

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

मैं छवियों के साथ कस्टम ग्रिड दृश्य प्राप्त करने के लिए निम्न कोड का उपयोग करता हूं। मैं पूर्ण कोड CLICK HERE दूंगा ताकि आप चुनने के साथ-साथ अनुसरण कर सकें।

अब केवल महत्वपूर्ण चीजें हैं। आदेश में छूने पर चेतन करने के लिए मेरी छवि को पाने के लिए मैं इस

button_ripple.xml

<ripple 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="@color/cream_background"> 
    <item> 
     <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
      <!-- Pressed --> 
      <item 
       android:drawable="@color/button_selected" 
       android:state_pressed="true"/> 
      <!-- Selected --> 
      <item 
       android:drawable="@color/button_selected" 
       android:state_selected="true"/> 
      <!-- Focus --> 
      <item 
       android:drawable="@color/button_selected" 
       android:state_focused="true"/> 
      <!-- Default --> 
      <item android:drawable="@color/transparent"/> 
     </selector> 
    </item> 
</ripple> 

custom_grid.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center_horizontal" 
       android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/sceneGridItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/button_ripple" 
     android:gravity="center_horizontal"/> 

</LinearLayout> 

activity_main.xml

<GridView 
    android:id="@+id/sceneGrid" 
    android:layout_marginTop="15dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:verticalSpacing="15dp" 
    android:numColumns="5" /> 
की जरूरत

वह लाइन जहां सभी जादू और समस्याएं होती हैं जब मैं पृष्ठभूमि सेट करता हूं। हालांकि यह वास्तव में मेरे छविदृश्य पर एक लहर एनीमेशन देता है, यह छविदृश्य के पीछे एनिमेट करता है। मैं एनीमेशन छवि के शीर्ष पर प्रकट करना चाहता हूं। तो मैंने कुछ अलग-अलग चीजों की कोशिश की जैसे

संपूर्ण ग्रिड पृष्ठभूमि को बटन_ripple पर सेट करना।

<GridView 
    android:id="@+id/sceneGrid" 
    android:layout_marginTop="15dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:verticalSpacing="15dp" 
    android:background="@drawable/button_ripple" 
    android:numColumns="5" /> 

यह वास्तव में आपको क्या लगता है कि होता है, अब पूरे ग्रिड एक अर्द्ध पारदर्शी पृष्ठभूमि है और कोई बात नहीं मैं क्या छवि प्रेस पूरे ग्रिड ग्रिड के केंद्र से एनिमेट। हालांकि यह बहुत अच्छा है, यह वही नहीं है जो मैं चाहता हूं।

रूट/पैरेंट पृष्ठभूमि को बटन_ripple पर सेट करना।

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="center_horizontal" 
        android:background="@drawable/button_ripple" 
        android:orientation="horizontal"> 

क्षेत्र बड़ा है और ग्रिड (न केवल छवि) के पूरे सेल भरता है, लेकिन यह सामने करने के लिए इसे नहीं होने देती।

एक RelativeLayout को custom_grid.xml बदलने और एक दूसरे

custom_grid.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal"> 

    <ImageView 
     android:id="@+id/gridItem" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" /> 

    <ImageView 
     android:id="@+id/gridItemOverlay" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:background="@drawable/button_ripple" /> 

</RelativeLayout> 

के शीर्ष पर दो ImageViews डाल CustomGridAdapter.java

.... 
gridItemOverLay = (ImageView) findViewById(R.id.gridItemOverlay); 
gridItemOverlay.bringToFront(); 

यह काम।अब नीचे छवि दृश्य में मेरी छवि है, और शीर्ष एनिमेट्स, मेरी छवि के शीर्ष पर एक लहर एनीमेशन का भ्रम दे रहा है। ईमानदारी से हालांकि यह एक काम है। मुझे ऐसा लगता है कि यह इरादा नहीं था। तो मैं आपको ठीक लोगों से पूछता हूं, क्या कोई बेहतर तरीका है या यहां तक ​​कि एक अलग तरीका भी है?

+0

कृपया बटन_प्रिपल ड्रायबल के लिए एक्सएमएल शामिल करें। – alanv

+0

@alanv अनुरोध किया गया – Jawascript

+0

तत्व एक चयनकर्ता नहीं है, यह एक परत सूची है। रिपलड्राउबल के लिए प्रलेखन पर एक नज़र डालें। – alanv

उत्तर

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