Hi guys,
Have you ever seen a view that looks so delicious, that on a very first look you want to add it in your next application. If not than have a look at the homepage of an app named "Expedia". Hats off to the designers and developers of the app for putting such a great effort.
So, while searching about, how i can create a same View or effect of list-views in my app. I stumbled upon a library-project named "ListBuddies" in "Jpardogo" github repo. Thanks to the developer of this library-project, you guys can achieve in an easy way, the behaviour of the home page in the Expedia app, with a pair of auto-scroll circular parallax ListViews.
Here's the link to ListBuddies Library-Project
(Hope you all know how to add a library-project to your project)
A video example of this library is on this youtube video.
And the demo app can be found on the play store.

There are a bunch of optional custom attributes:
If you prefere to create it dynamically use:
This
Both adapters need to be extend from
The first different is that the adapter needs to
and instead of get the value of
To receive the callback for the click on the items of the lists, Just call
....
You will receive the OnItemClick callback in
In order to receive touch feedback for the click of the list items,
we need to have as a parent of our list item view one of the following
layouts:
This layouts have
The color will need some transparency in order to act as the ListView selector:
Although it is just optional.
Hope to see this view, very soon, in some of your apps. :)
And Remember : "A Beautiful app, is what everyone wants."
Have you ever seen a view that looks so delicious, that on a very first look you want to add it in your next application. If not than have a look at the homepage of an app named "Expedia". Hats off to the designers and developers of the app for putting such a great effort.
So, while searching about, how i can create a same View or effect of list-views in my app. I stumbled upon a library-project named "ListBuddies" in "Jpardogo" github repo. Thanks to the developer of this library-project, you guys can achieve in an easy way, the behaviour of the home page in the Expedia app, with a pair of auto-scroll circular parallax ListViews.
Here's the link to ListBuddies Library-Project
(Hope you all know how to add a library-project to your project)
A video example of this library is on this youtube video.
And the demo app can be found on the play store.
Usage
You must declare the following view in your xml layout: <com.jpardogo.listbuddies.lib.views.ListBuddiesLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listbuddies"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.jpardogo.listbuddies.lib.views.ListBuddiesLayout
xmlns:listbuddies="http://schemas.android.com/apk/res-auto"
android:id="@+id/listbuddies"
android:layout_width="match_parent"
android:layout_height="match_parent"
listbuddies:speed="2"
listbuddies:gap="@dimen/gap"
listbuddies:gapColor="@color/frame"
listbuddies:listsDivider="@drawable/divider"
listbuddies:listsDividerHeight="@dimen/divider_height"
listbuddies:autoScrollFaster="right"
listbuddies:scrollFaster="left"/>
ListBuddiesLayout listBuddies = new ListBuddiesLayout(this);
listBuddies.setGap(mMarginDefault)
.setSpeed(ListBuddiesLayout.DEFAULT_SPEED)
.setDividerHeight(mMarginDefault)
.setGapColor(getResources().getColor(R.color.frame))
.setAutoScrollFaster(
mScrollConfig[ScrollConfigOptions.RIGHT.getConfigValue()])
.setManualScrollFaster(
mScrollConfig[ScrollConfigOptions.LEFT.getConfigValue()])
.setDivider(getResources().getDrawable(R.drawable.divider));
((FrameLayout)findViewById(R.id.<container_id>)).addView(listBuddies);
Attributes
speed: Sets the auto scroll speed (integer). 0 - no autoScrollgap: Space between the lists, the default gap is 3dp (@dimen/default_margin_between_lists).gapColor: Defines the color of the gap, if it is not set the gap is transparentlistDivider: Defines the lists dividers.listsDividerHeight: Divider´s height.autoScrollFaster: Indicate the ListView that will be faster on the parrallax effect during autoScroll. right/left.scrollFaster: Indicate the ListView that will be faster on the parrallax effect during manual scroll. right/left.
This
LinearLayout contains two ListViews.
So we need to set the adapters of the ListViews calling
listBuddies.setAdapters(adapter1,adapter2). @Override
public View onCreateView(LayoutInflater inflater
, ViewGroup container,Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main
, container, false);
ListBuddiesLayout listBuddies = (ListBuddiesLayout) rootView
.findViewById(R.id.listbuddies);
CircularAdapter adapter = new CircularAdapter(getActivity(),
getResources()
.getDimensionPixelSize(R.dimen.image_size1),
ImagesUrls.imageUrls_left);
CircularAdapter adapter2 = new CircularAdapter(getActivity(),
getResources()
.getDimensionPixelSize(R.dimen.image_size2),
ImagesUrls.imageUrls_right);
listBuddies.setAdapters(adapter, adapter2);
return rootView;
}
CircularLoopAdapter. With minimal differences from a BaseAdapter.
public class CircularAdapter extends CircularLoopAdapter
@Override getCircularCount() instead of getCount().
@Override
protected int getCircularCount() {
return mItems.size();
}
position to get the item from the list. We need to get the position calling getCircularPosition(position), like this:
@Override
public String getItem(int position) {
return mItems.get(getCircularPosition(position));
}
setOnItemClickListener() on your ListBuddiesLayout view and pass and instance of OnBuddyItemClickListener.public class ListBuddiesFragment extends Fragment
implements ListBuddiesLayout.OnBuddyItemClickListener
listBuddies.setOnItemClickListener(this);
onBuddyItemClicked which is similar to onItemClick but indicate with the parameter int buddy in which of the lists the item clicked is contained.
if the value of buddy is 0 the item is on the first list (left) and if it is 1 is on the second list (right). @Override
public void onBuddyItemClicked(AdapterView<?> parent, View view
, int buddy, int position, long id) {
//int buddy indicate the list where the item is contain.
// 0 - left
// 1 - right
}
com.jpardogo.listbuddies.lib.views.containers.FrameLayoutFeedback
com.jpardogo.listbuddies.lib.views.containers.RelativeLayoutFeedBack
com.jpardogo.listbuddies.lib.views.containers.LinearLayoutFeedBackThis layouts have
selectorColor property to define the color of the selector for the feedback. <com.jpardogo.listbuddies.lib.views.containers.FrameLayoutFeedback
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:listbuddies="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
listbuddies:selectorColor="@color/blue">
<color name="blue">#7733B5E5</color>
Including in your project
You can either add the library to your application as a library project or add the following dependency to your build.gradle:dependencies {
compile 'com.jpardogo.listbuddies:library:(latest version)'
}
Developed By
Javier Pardo de Santayana Gómez - jpardogo@gmail.comHope to see this view, very soon, in some of your apps. :)
And Remember : "A Beautiful app, is what everyone wants."
This comment has been removed by the author.
ReplyDelete