【问题标题】:How to provide 3d effect to the viewpager image or is it possible to provide 3d effect to the viewpager?如何为 viewpager 图像提供 3d 效果,或者是否可以为 viewpager 提供 3d 效果?
【发布时间】:2014-09-11 21:33:57
【问题描述】:

我开发了一个应用程序,假设显示位于可绘制文件夹中的图像..并且用户可以在图像之间滑动..但是,作为 android 新手,我很好奇这个 youtube 链接中显示的效果是否可行。 .http://www.youtube.com/watch?v=52mXHqX9f3Y.然而,程序员使用了脚蹼,我有 viewpager....所以任何代码帮助以及解释都将不胜感激..我还看到了一些关于用户想要在 a、b 和 c 图像之间滑动的问题的 SO question..但我不想达到那些效果..

以下是我的代码...

Imageadapter.java

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImageAdapter extends PagerAdapter {
    Context context;
    private int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three,
        R.drawable.four,
        R.drawable.five
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType. FIT_XY  );
      Resources r = context.getResources();
      Bitmap bmp = BitmapFactory.decodeResource(r, GalImages[position]);
      int width=200;//set your width
      int height=200;//set your height
      Bitmap resizedbitmap = Bitmap.createScaledBitmap(bmp, width, height, true);
      Drawable d = new BitmapDrawable(r,resizedbitmap);
      Drawable[] layers = new Drawable[2];
      layers[0] = d;
      layers[1] = r.getDrawable(R.drawable.a);
      LayerDrawable layerDrawable = new LayerDrawable(layers);
      imageView.setImageDrawable(layerDrawable);
      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
  }

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" 
    tools:context=".MainActivity"
    android:icon="@drawable/icon" >


          <android.support.v4.view.ViewPager
          android:id="@+id/view_pager"
          android:layout_width="match_parent"
          android:layout_height="match_parent" 
         android:icon="@drawable/icon"
         />
           <ImageView
        android:id="@+id/swipe_left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/swipe_left" />

    <ImageView
        android:id="@+id/swipe_right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:src="@drawable/swipe_right" />

</RelativeLayout>

【问题讨论】:

    标签: android android-viewpager gallery android-imageview


    【解决方案1】:

    您可以使用ObjectAnimator 来获得所需的效果。

    ObjectAnimator animator = (ObjectAnimator)AnimatorInflater.loadAnimator(
                [activity], R.animator.flip_0_90);
    animator.setTarget(imageView);
    animator.start();
    

    然后对于flip_0_90.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
        android:valueFrom="0" 
        android:valueTo="90" 
        android:propertyName="rotationY"
        android:duration="250" >
    
    </objectAnimator>
    

    然后在onAnimationEnd改变照片的动画上设置一个监听器,并应用一个新的动画从270度旋转到360度。

    【讨论】:

    • @dcharms...你能告诉我我应该把上面的java代码放在哪里吗,谢谢你的回复......另外,我想显示一些文本,如视频..可以这样做吗?
    • 把它放在你想用动画改变图片的地方。根据您的描述,我会在滑动检测器中进行。不知道你说的文字是什么意思,但如果它像视频中的棒球卡,你可以隐藏你的 ImageView 并显示另一个包含文字的视图,然后将其旋转回来。
    • @dcharms...它在这段代码之后说语法毒性错误.. ObjectAnimator animator = (ObjectAnimator)AnimatorInflater.loadAnimator(
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多