Android的现代转盘图书馆

时间:2014-03-30 17:35:43

标签: android carousel

图像的轮播动画是否有

我找到了http://www.androidviews.net/2012/10/android-coverflow/; https://code.google.com/p/android-coverflow/但此库/代码段使用扩展gallay (在API级别16(4.1.2)中不推荐使用Gallery类),那么是否有任何(现代)库?也许与毕加索合并?

5 个答案:

答案 0 :(得分:11)

以下是 CarouselView 的免费链接 Github LinkAndroid Arsenal

<强>摇篮:

compile 'com.synnapps:carouselview:0.0.7'

Maven:

<dependency>
 <groupId>com.synnapps</groupId> 
 <artifactId>carouselview</artifactId>
 <version>0.0.7</version>
 <type>pom</type>
</dependency>

<强>用法:
在您的布局中包含以下代码:

<com.synnapps.carouselview.CarouselView
    android:id="@+id/carouselView"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:fillColor="#FFFFFFFF"
    app:pageColor="#00000000"
    app:radius="6dp"
    app:slideInterval="3000"
    app:strokeColor="#FF777777"
    app:strokeWidth="1dp"/>

在您的活动中加入以下代码:

public class SampleCarouselViewActivity extends AppCompatActivity {

CarouselView carouselView;

int[] sampleImages = {R.drawable.image_1, R.drawable.image_2, R.drawable.image_3, R.drawable.image_4, R.drawable.image_5};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample_carousel_view);

    carouselView = (CarouselView) findViewById(R.id.carouselView);
    carouselView.setPageCount(sampleImages.length);

    carouselView.setImageListener(imageListener);
}

ImageListener imageListener = new ImageListener() {
    @Override
    public void setImageForPosition(int position, ImageView imageView) {
        imageView.setImageResource(sampleImages[position]);
    }
};

}

如果要添加自定义视图,请实施 ViewListener。

public class SampleCarouselViewActivity extends AppCompatActivity {

CarouselView customCarouselView;
int NUMBER_OF_PAGES = 5;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sample_carousel_view);

    customCarouselView = (CarouselView) findViewById(R.id.customCarouselView);
    customCarouselView.setPageCount(NUMBER_OF_PAGES);
    // set ViewListener for custom view 
    customCarouselView.setViewListener(viewListener);
}

ViewListener viewListener = new ViewListener() {

    @Override
    public View setViewForPosition(int position) {
        View customView = getLayoutInflater().inflate(R.layout.view_custom, null);
        //set view attributes here

        return customView;
    }
};
  

有关更多信息,请访问github链接

答案 1 :(得分:6)

我在搜索时找不到任何此类库,但在制作我自己的应用并使用ViewPager显示片段时,我已经实现了我自己的实现{{{ 3}}

虽然您已经要求提供图书馆,但我遇到了类似的情况,但最终发现它很容易创建我自己的课程,所以你也可以。我的指导来自Google Developer文档中的ViewPager.PageTransformer。这是我的代码:

public class CarouselPageTransformer implements ViewPager.PageTransformer {
    @Override
    public void transformPage(View page, float position) {
        float scaleFactor = 0.5f;
        float rotationFactor = 20;

        if (position < 0) {
            page.setRotationY(rotationFactor * -position);
            float scale = 1 + scaleFactor * position;
            page.setScaleX(scale);
            page.setScaleY(scale);

        } else {
            page.setRotationY(rotationFactor * -position);
            float scale = 1 - scaleFactor * position;
            page.setScaleX(scale);
            page.setScaleY(scale);
        }
    }
}

托管转换的活动然后调用:

viewPager.setPageTransformer(true, new CarouselPageTransformer());

此代码将ViewPager的片段定位到可见屏幕的两侧,但您可以轻松地将它们定位为可见,例如您在问题中提供的链接。< / p>

请注意所需的最低SDK;来自ViewPager.PageTransform的文档:

  

由于属性动画仅支持从Android 3.0开始直播,因此在早期平台版本的ViewPager上设置PageTransformer将被忽略。

答案 2 :(得分:6)

我已经尝试了很多寻找Carousel的替代品。我终于找到了完美的选择。

InfiniteCycleViewPager

这就是Carousel库的功能。

我将其修改为从我的SD卡而不是Drawables加载图像。

作品非常好。

如果您仍在使用它并需要任何帮助,请与我联系。

答案 3 :(得分:1)

private void setImageToCaroussel(){

    imgUrls.add("https://im.idiva.com//content/2015/May/salon_ettiquette1.jpg");
    imgUrls.add("https://www.womenfitness.net/wp/wp-content/uploads/2018/04/What-to-look-for-when-choosing-a-hair-salon-1000x667.jpg");
    imgUrls.add("https://cdn.website.thryv.com/e3abe5c926184c4ca25389d43ae29913/dms3rep/multi/mobile/713b0a2.jpg");

    carouselView = (CarouselView) findViewById(R.id.carouselView);
    carouselView.setPageCount(imgUrls.size());

    carouselView.setImageListener(imageListener);

}
 ImageListener imageListener = new ImageListener() {
    @Override
    public void setImageForPosition(final int position, final ImageView imageView) {

        Glide.with(ShopActivity.this)
                .asBitmap()
                .load(imgUrls.get(position))
                .into(new CustomTarget<Bitmap>() {
                    @Override
                    public void onResourceReady(@Nullable Bitmap resource,@Nullable Transition<? super Bitmap> transition) {
                        imageView.setImageBitmap(resource);
                    }

                    @Override
                    public void onLoadCleared(@Nullable Drawable placeholder) {

                    }

                });
    }
};

答案 4 :(得分:0)

setImageListener会解决之前致电setPageCount