Sina.iRoid
جمعه 10 بهمن 1393, 18:02 عصر
سلام
دوستان من یه برنامه ای و نوشتم که شامل یک ViewFlipper و با استفاده از انیمیشن به عکس بعدی و یا قبلی میره. برای رفتن به عکس بعدی هیچ مشکلی نیست، اما وقتی که دکمه Pre و می زنم که بره عکس قبلی، ابتدا عکس اول میاد و بعد این عکسی که هست میره. یعنی یه جورایی می افتن روی هم و کاملا هم معلومه. کد های من به صورت زیره:
من متوجه مشکلش نمیشم. ممنون میشم اگر راهنماییم کنید :)
<?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="1400"/>
</set>
<?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="1400"/>
</set>
<?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="1400"/>
</set>
<?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="1400"/>
</set>
layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/TxtView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#000099"
android:textSize="30sp"
android:text="View Flipper Demo"/>
<ViewFlipper
android:id="@+id/ViewFlipper01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="6dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="This Is Screen 1"
android:textColor="#191975"
android:textSize="25dp"
android:textStyle="bold"/>
<ImageView
android:id="@+id/ImgView01"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center"
android:src="@drawable/stevejobs"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="This Is Screen 2"
android:textColor="#191975"
android:textSize="25dp"
android:textStyle="bold"/>
<ImageView
android:id="@+id/ImgView02"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/stevejobs1"/>
</LinearLayout>
</ViewFlipper>
<Button
android:id="@+id/BtnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next"/>
<Button
android:id="@+id/BtnPre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pre"/>
</LinearLayout>
و کلاس اصلی:
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ViewFlipper;
public class MainActivity extends Activity implements OnClickListener{
private ViewFlipper flipper;
private float lastX;
private Button nextBtn;
private Button preBnt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
flipper = (ViewFlipper) findViewById(R.id.ViewFlipper01);
nextBtn = (Button) findViewById(R.id.BtnNext);
preBnt = (Button) findViewById(R.id.BtnPre);
nextBtn.setOnClickListener(this);
preBnt.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.BtnNext:
flipper.setInAnimation(this, R.anim.in_from_left);
flipper.setOutAnimation(this, R.anim.out_to_right);
flipper.showNext();
break;
case R.id.BtnPre:
flipper.setInAnimation(this, R.anim.in_from_right);
flipper.setOutAnimation(this, R.anim.out_to_left);
flipper.showPrevious();
break;
}
}
}
دوستان من یه برنامه ای و نوشتم که شامل یک ViewFlipper و با استفاده از انیمیشن به عکس بعدی و یا قبلی میره. برای رفتن به عکس بعدی هیچ مشکلی نیست، اما وقتی که دکمه Pre و می زنم که بره عکس قبلی، ابتدا عکس اول میاد و بعد این عکسی که هست میره. یعنی یه جورایی می افتن روی هم و کاملا هم معلومه. کد های من به صورت زیره:
من متوجه مشکلش نمیشم. ممنون میشم اگر راهنماییم کنید :)
<?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="1400"/>
</set>
<?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="1400"/>
</set>
<?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="1400"/>
</set>
<?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="1400"/>
</set>
layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/TxtView01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#000099"
android:textSize="30sp"
android:text="View Flipper Demo"/>
<ViewFlipper
android:id="@+id/ViewFlipper01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="6dp">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="This Is Screen 1"
android:textColor="#191975"
android:textSize="25dp"
android:textStyle="bold"/>
<ImageView
android:id="@+id/ImgView01"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center"
android:src="@drawable/stevejobs"/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:text="This Is Screen 2"
android:textColor="#191975"
android:textSize="25dp"
android:textStyle="bold"/>
<ImageView
android:id="@+id/ImgView02"
android:layout_width="150dp"
android:layout_height="150dp"
android:src="@drawable/stevejobs1"/>
</LinearLayout>
</ViewFlipper>
<Button
android:id="@+id/BtnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next"/>
<Button
android:id="@+id/BtnPre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pre"/>
</LinearLayout>
و کلاس اصلی:
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ViewFlipper;
public class MainActivity extends Activity implements OnClickListener{
private ViewFlipper flipper;
private float lastX;
private Button nextBtn;
private Button preBnt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
flipper = (ViewFlipper) findViewById(R.id.ViewFlipper01);
nextBtn = (Button) findViewById(R.id.BtnNext);
preBnt = (Button) findViewById(R.id.BtnPre);
nextBtn.setOnClickListener(this);
preBnt.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.BtnNext:
flipper.setInAnimation(this, R.anim.in_from_left);
flipper.setOutAnimation(this, R.anim.out_to_right);
flipper.showNext();
break;
case R.id.BtnPre:
flipper.setInAnimation(this, R.anim.in_from_right);
flipper.setOutAnimation(this, R.anim.out_to_left);
flipper.showPrevious();
break;
}
}
}