2012-10-04 15 views
5

मैं एक ऐप लागू कर रहा हूं जहां मैं आईफोन में आइकन को हिला देना चाहता हूं।लंबे समय तक प्रेस पर आईफोन के रूप में एंड्रॉइड में शेक आइकन

मैं इसे कैसे कार्यान्वित कर सकता हूं?

मैंने यहां अपनी एनीमेशन का कोड संलग्न किया है। कृपया मुझे कोई समाधान सुझाएं। मैंने सोलन की कोशिश की है जो पहले से ही स्टैक ओवरफ्लो पर निर्दिष्ट है लेकिन यह मेरे मामले में काम नहीं कर रहा है। और यह वर्ग एक गैर-गतिविधि वर्ग है जिसमें यह एनीमेशन सेट लिखा गया है।

protected void animateDragged(){ 
    View v = getChildAt(dragged); 
    int x = getCoorFromIndex(dragged).x + childSize/2, y = getCoorFromIndex(dragged).y + childSize/2; 
    int l = x - (3 * childSize/4), t = y - (3 * childSize/4); 
    v.layout(l, t, l + (childSize * 3/2), t + (childSize * 3/2)); 
    AnimationSet animSet = new AnimationSet(true); 
    ScaleAnimation scale = new ScaleAnimation(.667f, 1, .667f, 1, childSize * 3/4, childSize * 3/4); 
    scale.setDuration(animT); 
    AlphaAnimation alpha = new AlphaAnimation(1, .5f); 
    alpha.setDuration(animT); 

    animSet.addAnimation(scale); 
    animSet.addAnimation(alpha); 
    animSet.setFillEnabled(true); 
    animSet.setFillAfter(true); 

    v.clearAnimation(); 
    v.startAnimation(animSet); 
} 

धन्यवाद

उत्तर

7

हो सकता है आप anim फ़ोल्डर में shake.xml बना सकते हैं।

<?xml version="1.0" encoding="utf-8"?> 
<rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:duration="100" 
    android:fromDegrees="-5" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="infinite" 
    android:repeatMode="reverse" 
    android:toDegrees="5" /> 

अब के रूप में

Animation animation=AnimationUtils.loadAnimation(this,R.anim.shake); 
v.startAnimation(animation); 
+0

इसका काम नहीं कर भाई से प्रत्येक के लिए पाश में नीचे कोड स्निपेट का उपयोग करें। विधि लोड एनीमेशन (संदर्भ, int) प्रकार एनीमेशन उपयोग में तर्कों के लिए लागू नहीं है (DraggableGridView, int) –

+0

धन्यवाद, मैंने अपना रास्ता निकाला। धन्यवाद –

+0

@GauravArora क्या आप कृपया समझा सकते हैं, आपने अपनी समस्या का समाधान कैसे किया। मैं सीखने और समझने के लिए उत्सुक हूँ। –

0

अपने विधि animateDragged() में इसका इस्तेमाल करते हैं आप भी विभिन्न यादृच्छिक एनिमेशन प्रोग्राम के प्रत्येक दृश्य के लिए कर सकते हैं। बस अपने माउस

 float px = ((float) Math.random() * .5f); 
     float py = ((float) Math.random() * .5f); 

     RotateAnimation anim = new RotateAnimation((float) Math.PI/2 * -1.f, (float) Math.PI/2, 
       RotateAnimation.RELATIVE_TO_SELF, .25f + px, 
       RotateAnimation.RELATIVE_TO_SELF, .25f + py); 
     anim.setDuration((long) (80. + (Math.random() * 50.))); 
     anim.setRepeatCount(RotateAnimation.INFINITE); 
     anim.setRepeatMode(RotateAnimation.REVERSE); 

     v.startAnimation(anim); 
संबंधित मुद्दे