Android - 创建类似 Airbnb 的水平图像滑块
Android - Creating an Airbnb-like Horizontal Image Slider
我想复制 airbnb 的应用程序图像滑块,其中您在视图顶部有一个图像,您可以水平滑动该图像并在滑动时自动转到下一个图像。我创建了一个 horizontalscrollview,但它的功能并不完全正确。它不会从一个图像翻转到另一个图像,在滑动时它会沿着图像滚动并最终滚动到下一个图像。我在谷歌上搜索了很多,没有看到一个不被弃用的解决方案。
有什么想法吗?
编辑 - 根据请求添加我的一些代码:
基本上,我从我的 AWS 数据库(在下面未显示的不同 class 中)提取 imageURL,然后尝试使用 Picasso 将这些 URL 加载到 horizontalscrollview 中。
//generic instructions to allow insertion of pictures into a horizontalimageslider
public View insertPhoto(String path){
LinearLayout layout = new LinearLayout(getActivity());
layout.setGravity(Gravity.CENTER);
ImageView imageView = new ImageView(getActivity());
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Picasso.with(getActivity() ).load(path).into(imageView); //tried this but got errors when running > resize(layout.getWidth(), layout.getHeight()), also tried .fit() after .load image wouldn't load
layout.addView(imageView);
return layout;
}
private class GetApartmentTask extends AsyncTask<ApiConnector,Long,Apartment >
//after a doInBackground
@Override
protected void onPostExecute(Apartment apartment) {
//to get image URL from database to then use with Picasso to download the image
mImageURLArraylist = mApartment.getApartmentImageArrayList();
for (int z = 0 ;z<mImageURLArraylist.size(); z++) {
mLinearLayout.addView(insertPhoto("http:" + mImageURLArraylist.get(z)) );
}
}}
在 onCreateView 方法中(显然还有其他东西)
mLinearLayout = (LinearLayout) v.findViewById(R.id.details_page_apartment_picture);
MyXML(相关部分)
<HorizontalScrollView
android:id="@+id/horizontal_scroll_view"
android:layout_width="match_parent"
android:layout_height="500dp"
android:fillViewport="true">
<LinearLayout
android:id="@+id/details_page_apartment_picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
我不知道 airbnb 应用图像滑块的具体细节,但听起来您可以使用 flexslider。它基本上是一个 JQuery 工具包。我以前在网站上使用过它,它似乎具有您正在寻找的功能。
经过几个小时的挫折和一些帮助越过终点线之后,以这种方式滑动屏幕的某些部分的答案是使用 viewpager。
一些很好的参考资料:
swipe some part of the screen
http://developer.android.com/training/animation/screen-slide.html
What is the role of " isViewFromObject (View view, Object object)" in FragmentStatePagerAdapter?
我发布的另一个问题中提供了我的工作代码,它让我完成了终点线:) --
我想复制 airbnb 的应用程序图像滑块,其中您在视图顶部有一个图像,您可以水平滑动该图像并在滑动时自动转到下一个图像。我创建了一个 horizontalscrollview,但它的功能并不完全正确。它不会从一个图像翻转到另一个图像,在滑动时它会沿着图像滚动并最终滚动到下一个图像。我在谷歌上搜索了很多,没有看到一个不被弃用的解决方案。
有什么想法吗?
编辑 - 根据请求添加我的一些代码:
基本上,我从我的 AWS 数据库(在下面未显示的不同 class 中)提取 imageURL,然后尝试使用 Picasso 将这些 URL 加载到 horizontalscrollview 中。
//generic instructions to allow insertion of pictures into a horizontalimageslider
public View insertPhoto(String path){
LinearLayout layout = new LinearLayout(getActivity());
layout.setGravity(Gravity.CENTER);
ImageView imageView = new ImageView(getActivity());
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
Picasso.with(getActivity() ).load(path).into(imageView); //tried this but got errors when running > resize(layout.getWidth(), layout.getHeight()), also tried .fit() after .load image wouldn't load
layout.addView(imageView);
return layout;
}
private class GetApartmentTask extends AsyncTask<ApiConnector,Long,Apartment >
//after a doInBackground
@Override
protected void onPostExecute(Apartment apartment) {
//to get image URL from database to then use with Picasso to download the image
mImageURLArraylist = mApartment.getApartmentImageArrayList();
for (int z = 0 ;z<mImageURLArraylist.size(); z++) {
mLinearLayout.addView(insertPhoto("http:" + mImageURLArraylist.get(z)) );
}
}}
在 onCreateView 方法中(显然还有其他东西)
mLinearLayout = (LinearLayout) v.findViewById(R.id.details_page_apartment_picture);
MyXML(相关部分)
<HorizontalScrollView
android:id="@+id/horizontal_scroll_view"
android:layout_width="match_parent"
android:layout_height="500dp"
android:fillViewport="true">
<LinearLayout
android:id="@+id/details_page_apartment_picture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
我不知道 airbnb 应用图像滑块的具体细节,但听起来您可以使用 flexslider。它基本上是一个 JQuery 工具包。我以前在网站上使用过它,它似乎具有您正在寻找的功能。
经过几个小时的挫折和一些帮助越过终点线之后,以这种方式滑动屏幕的某些部分的答案是使用 viewpager。
一些很好的参考资料: swipe some part of the screen http://developer.android.com/training/animation/screen-slide.html What is the role of " isViewFromObject (View view, Object object)" in FragmentStatePagerAdapter?
我发布的另一个问题中提供了我的工作代码,它让我完成了终点线:) --