एंड्रॉइड लेफ्ट टू राइट स्लाइड एनीमेशन


186

मेरे पास तीन गतिविधियाँ हैं जिनके लॉन्च मोड एकल उदाहरण हैं।
का उपयोग करते हुए onfling(), मैं उन्हें बाएं और दाएं स्विंग करता हूं।

समस्या यह है कि जब मैं स्लाइड संक्रमण के लिए बाएं से दाएं स्वाइप करता हूं तो ठीक है लेकिन जब मैं बाएं से दाएं स्वाइप करता हूं, तो मुझे बाएं से दाएं स्वाइप करने का संक्रमण होता है।

मुझे पता है कि ऐसा क्यों हो रहा है क्योंकि मैं हमेशा नए इरादे भेज रहा हूं। लेकिन, अब मुझे बाएं से दाएं स्लाइड करने के एनीमेशन को बदलने की आवश्यकता है।

मुझे पता है कि नाम का एक तरीका है overridingTransitionPending(), लेकिन मुझे नहीं पता कि एक्सएमएल में मेरे एनीमेशन को कैसे परिभाषित किया जाए।


4
यदि आपको मेरे पूछने में कोई आपत्ति नहीं है, तो जब तक आप स्वाइप नहीं करते तब तक आपने क्या गतिविधियाँ आयोजित की थीं?
एंडी

थोड़ी देर से लेकिन आप एक सरल होल्ड.xml फ़ाइल का उपयोग कर सकते हैं जिसमें सभी
डेल्टास के

जवाबों:


397

में इस xml का उपयोग करें res/anim/

यह बाएं से दाएं एनीमेशन के लिए है:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate android:fromXDelta="-100%" android:toXDelta="0%"
             android:fromYDelta="0%" android:toYDelta="0%"
             android:duration="700"/>
</set>

यह दाएं से बाएं एनीमेशन के लिए है:

<set xmlns:android="http://schemas.android.com/apk/res/android"
     android:shareInterpolator="false">
  <translate
     android:fromXDelta="0%" android:toXDelta="100%"
     android:fromYDelta="0%" android:toYDelta="0%"
     android:duration="700" />
</set>

बाएं से दाएं की तरह आपके कोडिंग उपयोग के इरादे में:

this.overridePendingTransition(R.anim.animation_enter,
                   R.anim.animation_leave);

अपने कोडिंग उपयोग में दाईं से बाईं ओर जैसे इरादे हैं

this.overridePendingTransition(R.anim.animation_leave,
                               R.anim.animation_enter);

2
कोई भी मौका हम android.view.animation का उपयोग कर सकते हैं। एक्सएमएल में इसे परिभाषित करने के बजाय जावा में उपयोग करें? मैं पहले से ही अपने ViewFlipper के लिए एनीमेशन वर्ग का उपयोग करता हूं, और मैं इसे ओवरराइडट्रांसिशनिंग () के लिए पुन: उपयोग करना चाहूंगा।
इगोरगानापोलस्की

1
क्या मैं एनीमेशन को एक छवि दे सकता हूं? मैं एक छवि को डिक्रिप्ट कर रहा हूं और इसे एक छवि दृश्य में सेट कर रहा हूं जिसे मैं प्रत्येक फ्लिंग में बदलना चाहता हूं मैं चाहता हूं कि छवि को प्रभाव के साथ सेट किया जा सके?
श्रीदेव आर।

1
मैंने एक शौक परियोजना में यह कोशिश की कि मैं काम कर रहा हूं, और यह बहुत अच्छा काम करता है! क्या एक्सएमएल-आधारित एनीमेशन के साथ काम करते समय बाहरी तरीके जैसे अवधि, सहजता आदि निर्धारित करना है?
डैनियल सैडी

7
ऊपर कौन सी फ़ाइल है एनीमेशन_लाइव.एक्सएमएल और एनीमेशन_सेंटर.एक्सएमएल?
जैस्पर

1
धन्यवाद। मैंने एक समस्या पर ध्यान दिया; दाएँ-से-बाएँ एनीमेशन के लिए आपने XDelta मानों की अदला-बदली की। Android होना चाहिए: fromXDelta = "100%" android: toXDelta = "0%"
रिकार्डो

150

यदि आप संपूर्ण अनुप्रयोग के लिए संक्रमण कार्य चाहते हैं, तो आप rootacivityअपनी ज़रूरत की गतिविधि में इसे बना सकते हैं और विरासत में दे सकते हैं । रूट गतिविधि में overridePendingTransitionवांछित दिशा के साथ कॉल करें । और onStartकॉल करेंoverridePendingTransition गतिविधि शुरू होने पर दूसरी दिशा से । यहाँ मैं नीचे पूरा रनिंग कोड दे रहा हूँ। अगर मैं गलत हूँ तो मुझे सुधारो।

इस xml फ़ाइल को अपने एनिमेशन फोल्डर पर बनाएं

anim_slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="100%"
        android:toXDelta="0%" >
    </translate>
</set>

anim_slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="-100%"
        android:toXDelta="0%" >
    </translate>
</set>

anim_slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="0%"
        android:toXDelta="-100%" >
    </translate>
</set>

anim_slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="600"
        android:fromXDelta="0%"
        android:toXDelta="100%" >
    </translate>
</set>

RootActivity

import android.app.Activity;
import android.os.Bundle;

public class RootActivity extends Activity {
    int onStartCount = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        onStartCount = 1;
        if (savedInstanceState == null) // 1st time
        {
            this.overridePendingTransition(R.anim.anim_slide_in_left,
                    R.anim.anim_slide_out_left);
        } else // already created so reverse animation
        { 
            onStartCount = 2;
        }
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        if (onStartCount > 1) {
            this.overridePendingTransition(R.anim.anim_slide_in_right,
                    R.anim.anim_slide_out_right);

        } else if (onStartCount == 1) {
            onStartCount++;
        }

    }

}

FirstActivity

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class FirstActivity extends RootActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.tvTitle);
        tv.setText("First Activity");
        Button bt = (Button) findViewById(R.id.buttonNext);
        bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(FirstActivity.this, SecondActivity.class);
                startActivity(i);

            }
        });
    }

}

SecondActivity

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class SecondActivity extends RootActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.tvTitle);
        tv.setText("Second Activity");
        Button bt = (Button) findViewById(R.id.buttonNext);
        bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(SecondActivity.this, ThirdActivity.class);
                startActivity(i);

            }
        });

    }

}

ThirdActivity

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class ThirdActivity extends RootActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.tvTitle);
        tv.setText("Third Activity");
        Button bt = (Button) findViewById(R.id.buttonNext);
        bt.setText("previous");
        bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();

            }
        });
    }

}

और अंत में घोषणापत्र

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.transitiontest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.transitiontest.FirstActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.transitiontest.SecondActivity"
            android:label="@string/app_name" >
        </activity>
        <activity
            android:name="com.example.transitiontest.ThirdActivity"
            android:label="@string/app_name" >
        </activity>
    </application>

</manifest>

मुझे पता है कि यह वास्तव में एक पुरानी पोस्ट है, हालांकि, मैं नहीं कर सकता कि मेरे जीवन के लिए बाएं स्लाइड एनीमेशन के दाईं ओर लोड करने के लिए onUpNavigation प्राप्त करें (गतिविधि के बाद बनाया गया है)। हर बार, कोई बात नहीं, यह बाएं से दाएं एनीमेशन करता है। क्या किसी के भी पास कोई सुझाव है???
रयान सी

1
इस समाधान लोगों क्रैश हो सकता है, हम करने के लिए ObjectAnimator देखें उपयोग किया है stackoverflow.com/questions/17760299/...
स्वप्निल

वह उत्तर स्वीकृत होना चाहिए। यह वास्तव में समझ में आता है और अच्छा काम करता है
Ahmet

69

बाएं, दाएं, ऊपर और नीचे से स्लाइड प्रभाव के साथ समान लागू करने वाला एक नमूना कोड बनाया। (उन लोगों के लिए जो न ही उन सभी एनिमेशन xml फ़ाइलों को बनाना चाहते हैं :))

गितुब पर कोड को चेकआउट करें


31

यदि आप " एक्टिविटी " स्टार्ट पर एनीमेशन लागू करना चाहते हैं । फिर कोड के नीचे लिखें।

startActivity(intent);
overridePendingTransition(R.anim.opening_anim, R.anim.closing_anim);

यदि आप " डायलॉग " पर एनीमेशन लागू करना चाहते हैं तो सबसे पहले styles.xmlफाइल में कोड जोड़ें

<style name="my_style”> 
 <item 
  name="@android:windowEnterAnimation">@anim/opening_anim</item> 
 <item 
 name="@android:windowExitAnimation">@anim/closing_anim</item>
</style>

इस शैली का उपयोग करें जैसा कि मैंने नीचे परिभाषित किया है।

final Dialog dialog = new Dialog(activity);
dialog.getWindow().getAttributes().windowAnimations = R.style.my_style;

यदि आप " दृश्य " पर एनीमेशन लागू करना चाहते हैं तो नीचे कोड लिखें

txtMessage = (TextView) findViewById(R.id.txtMessage);
     
// load the animation
Animation animFadein = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation); 

// start the animation
txtMessage.startAnimation(animFadein);

नीचे, मैंने अधिकांश एनीमेशन .xmlकोड का उल्लेख किया है ।

दिखाई देते हैं - यह सिर्फ दिखाई देते हैं। xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="1"
           android:fromAlpha="1.0"
           android:toAlpha="1.0"/>
</set>

===========================================

इसे धीरे-धीरे view.xml में फीका करें

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300"
        android:repeatCount="0" />
</set>

==========================================

fadeout - view.xml से इसे धीरे-धीरे फीका करें

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="1.0"
        android:toAlpha="0.0"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300"
        android:repeatCount="0" />
</set>

==========================================

push_down_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="400"/>
</set>

==========================================

push_down_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="400"/>
</set>

==========================================

push_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

==========================================

push_left_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

==========================================

push_right_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

==========================================

push_right_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

==========================================

push_up_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

==========================================

push_up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="-100%p" android:duration="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

==========================================

rotation.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="0" android:fillAfter="true">
</rotate>

==========================================

scale_from_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="0" android:toYScale="1.0"
        android:fromXScale="0" android:toXScale="1.0" 
        android:duration="500" android:pivotX="100%"
        android:pivotY="100%" />
</set>

==========================================

scale_torwards_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="1.0" android:toYScale="0"
        android:fromXScale="1.0" android:toXScale="0" 
        android:duration="500"/>
</set>

==========================================

shrink_and_rotate_a (निकास) .xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
    android:fromXScale="1.0" android:toXScale="0.8"
    android:fromYScale="1.0" android:toYScale="0.8"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="100"
/>
<scale
    android:fromXScale="1.0" android:toXScale="0.0"
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="150"
    android:startOffset="100"
/>

==========================================

shrink_and_rotate_b (प्रवेश द्वार) .xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
    android:fromXScale="0.0" android:toXScale="1.0"
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="150"
    android:startOffset="250"
/>

<scale
    android:fromXScale="0.8" android:toXScale="1.0"
    android:fromYScale="0.8" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="100"
    android:startOffset="400"
/>

========================================

blink.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
      android:toAlpha="1.0"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="800"
      android:repeatMode="reverse"
      android:repeatCount="infinite"/>
</set>

========================================

ZoomIn.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="1000"
       android:fromXScale="1"
       android:fromYScale="1"
       android:pivotX="50%"
       android:pivotY="50%"
       android:toXScale="3"
       android:toYScale="3" >
    </scale>
</set>

========================================

ZoomOut.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="1000"
       android:fromXScale="1.0"
       android:fromYScale="1.0"
       android:pivotX="50%"
       android:pivotY="50%"
       android:toXScale="0.5"
       android:toYScale="0.5" >
    </scale>
</set>

========================================

FadeIn.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <alpha
       android:duration="1000"
       android:fromAlpha="0.0"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toAlpha="1.0" />
</set>

========================================

FadeOut.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <alpha
       android:duration="1000"
       android:fromAlpha="1.0"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toAlpha="0.0" />
</set>

========================================

Move.xml

<?xml version="1.0" encoding="utf-8"?>
<set
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/linear_interpolator"
   android:fillAfter="true">
   <translate
       android:fromXDelta="0%p"
       android:toXDelta="80%p"
       android:duration="1000" />
</set>

========================================

SlideDown.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true">
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="0.0"
       android:interpolator="@android:anim/linear_interpolator"
       android:toXScale="1.0"
       android:toYScale="1.0" />
</set>

========================================

SlideUp.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="1.0"
       android:interpolator="@android:anim/linear_interpolator"
       android:toXScale="1.0"
       android:toYScale="0.0" />
</set>

========================================

Bounce.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true"
   android:interpolator="@android:anim/bounce_interpolator">
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="0.0"
       android:toXScale="1.0"
       android:toYScale="1.0" />
</set>

मेरा सौभाग्य! @VishrutMavani
प्रिंस

2
एनिमेशन का अच्छा संग्रह!
सेबासीरा

15

आप अपनी डिफ़ॉल्ट गतिविधि एनीमेशन को अधिलेखित कर सकते हैं। यहाँ समाधान है कि मैं का उपयोग करें:

एक "CustomActivityAnimation" बनाएं और इसे "windowAnimationStyle" द्वारा अपने बेस थीम में जोड़ें।

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>

</style>

<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>

Res फोल्डर के तहत ऐनिमेटेड फोल्डर बनाएं और फिर यह चार एनीमेशन फाइल्स बनाएं:

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

यह गितुब में मेरा नमूना प्रोजेक्ट है।

यह सब ... हैप्पी कोडिंग :)


क्या आप अपने एप्लिकेशन मेनिफ़ेस्ट में शैली जोड़ते हैं? मैं सिर्फ आपके लिए एक उदाहरण परियोजना बनाता हूं। github.com/ShohanAhmed/… यदि यह काम नहीं करता है तो कृपया अपने डिवाइस का नाम और Android संस्करण दें जिसमें वह काम नहीं कर रहा है। धन्यवाद
Shohan अहमद Sijan

सैमसंग SHV-E300S (S4 कोरियाई) Android संस्करण 5.0.1
हंजला

सबसे अच्छा समाधान हमेशा के लिए।
अहमदुल्लाह सैकत

14

इसके अलावा, आप यह कर सकते हैं:

FirstClass.this.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

और आपको कोई एनीमेशन xml जोड़ने की आवश्यकता नहीं है


संक्रमण एक प्रकार का धीमा है। किसी भी एनीमेशन फ़ाइल को जोड़ने के बिना इसे तेज करने का कोई तरीका?
माइक्रो

2

मैं ViewPropertyAnimator का उपयोग करके इस प्रकार के एनीमेशन के लिए कोई समाधान नहीं पा रहा था।

यहाँ एक उदाहरण है:

लेआउट:

<FrameLayout
android:id="@+id/child_view_container"
android:layout_width="match_parent"
android:layout_height="wrap_content">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/child_view"
        android:gravity="center_horizontal"
        android:layout_gravity="center_horizontal"
    />
</FrameLayout>

चेतन - बाएँ से दाएँ और दृश्य से बाहर:

final childView = findViewById(R.id.child_view);
View containerView = findViewById(R.id.child_view_container);
childView.animate()
  .translationXBy(-containerView.getWidth())
  .setDuration(TRANSLATION_DURATION)
  .setInterpolator(new AccelerateDecelerateInterpolator())
  .setListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        childView.setVisibility(View.GONE);
    }
});

चेतन - बाएँ से दाएँ प्रवेश दृश्य:

final View childView = findViewById(R.id.child_view);
View containerView = findViewById(R.id.child_view_container);
childView.setTranslationX(containerView.getWidth());
childView.animate()
    .translationXBy(-containerView.getWidth())
    .setDuration(TRANSLATION_DURATION)
    .setInterpolator(new AccelerateDecelerateInterpolator())
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationStart(Animator animation) {
            childView.setVisibility(View.VISIBLE);
        }
    });

क्या मैं दाएं से बाएं दिखा सकता हूं? क्योंकि आपका चेतन - दाएँ से बाएँ और बाहर निकलने का दृश्य, बाईं ओर की सामग्री को छुपाता है। मेरा लक्ष्य इसे दाईं से बाईं ओर दिखाना है
IntoTheDeep

1

यदि आपका API स्तर 19+ है तो आप translationऊपर बताए अनुसार उपयोग कर सकते हैं । यदि आपका API स्तर 19 से कम है, तो आप समान ट्यूटोरियल देख सकते हैं: http://trickyandroid.com/fragments-translate-animation/


0

दाएं से बाएं स्लाइड के लिए

रेस / anim / in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="100%" android:toXDelta="0%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

रेस / anim / out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:shareInterpolator="false">
   <translate
    android:fromXDelta="0%" android:toXDelta="-100%"
    android:fromYDelta="0%" android:toYDelta="0%"
    android:duration="700" />
</set>

गतिविधि जावा फ़ाइल में:

Intent intent = new Intent(HomeActivity.this, ActivityCapture.class);
startActivity(intent);
overridePendingTransition(R.anim.in,R.anim.out);

आप xml फ़ाइलों में लंबी या छोटी स्लाइड एनीमेशन के लिए अवधि बदल सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.