图像的轮播动画是否有库?
我找到了http://www.androidviews.net/2012/10/android-coverflow/; https://code.google.com/p/android-coverflow/但此库/代码段使用扩展gallay (在API级别16(4.1.2)中不推荐使用Gallery类),那么是否有任何(现代)库?也许与毕加索合并?
答案 0 :(得分:11)
以下是 CarouselView 的免费链接 Github Link和 Android 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的替代品。我终于找到了完美的选择。
这就是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