PDA

View Full Version : استفاده از انیمیشن در ویو-فلیپر



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;
}
}

}

pcpsoft
جمعه 10 بهمن 1393, 18:07 عصر
دوست عزیز می تونی حرفای ترش کنی بجای استاده از کلید برای تعویض عکس ها,می تونی بصورت لمسی اینکارو انجام بدی,مثل گالری خود گوشی

Sina.iRoid
جمعه 10 بهمن 1393, 18:24 عصر
بله میشه. اما الان مشکل چیزه دیگست. این عکسا می افتن رو هم اصلا کلا کار و خراب می کنه.

Sina.iRoid
جمعه 10 بهمن 1393, 22:50 عصر
ممنون میشم اگر راهنماییم کنید.

pcpsoft
یک شنبه 12 بهمن 1393, 11:59 صبح
ممنون میشم اگر راهنماییم کنید.

MainActivity.java

package com.example.imageswitcher;

import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageButton;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {

private ImageButton img;
private ImageSwitcher imageSwitcher;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img = (ImageButton)findViewById(R.id.imageButton1);
imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);

imageSwitcher.setFactory(new ViewFactory() {

@Override
public View makeView() {
ImageView myView = new ImageView(getApplicationContext());
myView.setScaleType(ImageView.ScaleType.FIT_CENTER );
myView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.
FILL_PARENT,LayoutParams.FILL_PARENT));
return myView;
}

});

}

public void next(View view){
Toast.makeText(getApplicationContext(), "Next Image",
Toast.LENGTH_LONG).show();
Animation in = AnimationUtils.loadAnimation(this,
android.R.anim.slide_in_left);
Animation out = AnimationUtils.loadAnimation(this,
android.R.anim.slide_out_right);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);
imageSwitcher.setImageResource(R.drawable.ic_launc her);
}
public void previous(View view){
Toast.makeText(getApplicationContext(), "previous Image",
Toast.LENGTH_LONG).show();
Animation in = AnimationUtils.loadAnimation(this,
android.R.anim.slide_out_right);
Animation out = AnimationUtils.loadAnimation(this,
android.R.anim.slide_in_left);
imageSwitcher.setInAnimation(out);
imageSwitcher.setOutAnimation(in);
imageSwitcher.setImageResource(R.drawable.ic_launc her);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

activity_main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="54dp"
android:onClick="next"
android:src="@android:drawable/ic_menu_send" />

<ImageSwitcher
android:id="@+id/imageSwitcher1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true" >
</ImageSwitcher>

<ImageButton
android:id="@+id/imageButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="85dp"
android:onClick="previous"
android:src="@android:drawable/ic_menu_revert" />

</RelativeLayout>

AndroidManifest.xml


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

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

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

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

اما بازم نظرم رو لمسیه :لبخندساده: