Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Android Ultra Pull To Refresh | 9,713 | 753 | 5 | 3 years ago | 10 | September 19, 2015 | 172 | mit | Java | |
Ultra Pull to Refresh for Android. Support all the views. | ||||||||||
Cameraview | 2,304 | 4 years ago | 55 | apache-2.0 | Java | |||||
仿微信拍照Android控件(轻触拍照,长按摄像) | ||||||||||
Animatorcompat | 164 | 8 years ago | Java | |||||||
AnimatorCompat: 一个快速创建动画帮助库 | ||||||||||
Csnackbar | 76 | 2 years ago | 3 | apache-2.0 | Java | |||||
This is a wrapper for android Snackbar. Which giving support to change Snackbar color, duration, message or even it's content view with a custom view. | ||||||||||
Circulardialogs | 33 | 6 years ago | 2 | apache-2.0 | Java | |||||
Its a library for the creating simple success and warning dialogs for android | ||||||||||
Android Ultra Pull To Refresh With Load More Master | 19 | 8 years ago | 1 | mit | Java | |||||
Longpresslistener | 16 | 2 years ago | 1 | October 25, 2021 | mit | Kotlin | ||||
Android long press(click) listener with custom duration ✨ | ||||||||||
Pretty Jupiter | 12 | 14 days ago | 3 | apache-2.0 | Java | |||||
A Gradle plugin to pretty-log JUnit Jupiter tests when run from the Gradle test task. Nested tests are grouped together and the output styles is very similar to `mocha.js` | ||||||||||
Android Pomodoro App | 6 | 6 years ago | Java | |||||||
Android Pomodoro Timer application with Facebook Login. You can change your pomodoro and break lengths. | ||||||||||
Android Banner | 3 | 2 years ago | mit | Kotlin | ||||||
banner |
GitHub: https://github.com/liaohuqiu
Twitter: https://twitter.com/liaohuqiu
Wanna auto-load-more? This will be what you want: liaohuqiu/android-cube-app
It's a replacement for the deprecated pull to refresh solution. It can contain any view you want.
It's easy to use and more powerful than SwipeRefreshLayout.
It's well designed, you can customize the UI effect you want as easy as adding a headview to ListView.
Support API LEVEL >= 8
, all snapshots are taken from Genymotion, 2.3.7.
StoreHouse Style first! Thanks to CBStoreHouseRefreshControl.
Material Style, added @ 2014-12-09. There is a beautiful shadow which looks terrible in gif snapshot. Please Check out the DEMO.
Supports all of the views: ListView, GridView, ScrollView, FrameLayout, or Even a single TextView.
Supports all of the refresh types.
pull to refresh
release to refresh
keep header when refresh
hide header when refresh
auto refresh
This project has been pushed to Maven Central, both in aar
and apklib
.
The latest version: 1.0.11
, has been published to: https://oss.sonatype.org/content/repositories/snapshots, in gradle:
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
The stable version: 1.0.11
, https://oss.sonatype.org/content/repositories/releases, in gradle:
mavenCentral()
pom.xml, latest version:
<dependency>
<groupId>in.srain.cube</groupId>
<artifactId>ultra-ptr</artifactId>
<type>aar</type>
<!-- or apklib format, if you want -->
<!-- <type>apklib</type> -->
<version>1.0.11</version>
</dependency>
pom.xml, stable version:
<dependency>
<groupId>in.srain.cube</groupId>
<artifactId>ultra-ptr</artifactId>
<type>aar</type>
<!-- or apklib format, if you want -->
<!-- <type>apklib</type> -->
<version>1.0.11</version>
</dependency>
gradle, latest version:
compile 'in.srain.cube:ultra-ptr:1.0.11'
gradle, stable version:
compile 'in.srain.cube:ultra-ptr:1.0.11'
There are 6 properties:
Resistence
This is the resistence while you are moving the frame, default is: 1.7f
.
Ratio of the Height of the Header to Refresh
The ratio of the height of the header to trigger refresh, default is: 1.2f
.
Duration to Close
The duration for moving from the position you relase the view to the height of header, default is 200ms
.
Duration to Close Header
The default value is 1000ms
Keep Header while Refreshing
The default value is true
.
Pull to Refresh / Release to Refresh
The default value is Release to Refresh.
<in.srain.cube.views.ptr.PtrFrameLayout
android:id="@+id/store_house_ptr_frame"
xmlns:cube_ptr="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
cube_ptr:ptr_resistance="1.7"
cube_ptr:ptr_ratio_of_header_height_to_refresh="1.2"
cube_ptr:ptr_duration_to_close="300"
cube_ptr:ptr_duration_to_close_header="2000"
cube_ptr:ptr_keep_header_when_refresh="true"
cube_ptr:ptr_pull_to_fresh="false" >
<LinearLayout
android:id="@+id/store_house_ptr_image_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cube_mints_333333"
android:clickable="true"
android:padding="10dp">
<in.srain.cube.image.CubeImageView
android:id="@+id/store_house_ptr_image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</in.srain.cube.views.ptr.PtrFrameLayout>
// the following are default settings
mPtrFrame.setResistance(1.7f);
mPtrFrame.setRatioOfHeaderHeightToRefresh(1.2f);
mPtrFrame.setDurationToClose(200);
mPtrFrame.setDurationToCloseHeader(1000);
// default is false
mPtrFrame.setPullToRefresh(false);
// default is true
mPtrFrame.setKeepHeaderWhenRefresh(true);
setPinContent
. Pin the content, only the HeaderView
will be moved.
This's the the performance of material style in support package v19.
// header
final StoreHouseHeader header = new StoreHouseHeader(getContext());
header.setPadding(0, LocalDisplay.dp2px(15), 0, 0);
/**
* using a string, support: A-Z 0-9 - .
* you can add more letters by {@link in.srain.cube.views.ptr.header.StoreHousePath#addChar}
*/
header.initWithString('Alibaba');
header.initWithStringArray(R.array.storehouse);
And in res/values/arrays.xml
:
<resources>
<string-array name="storehouse">
<item>0,35,12,42,</item>
<item>12,42,24,35,</item>
<item>24,35,12,28,</item>
<item>0,35,12,28,</item>
<item>0,21,12,28,</item>
<item>12,28,24,21,</item>
<item>24,35,24,21,</item>
<item>24,21,12,14,</item>
<item>0,21,12,14,</item>
<item>0,21,0,7,</item>
<item>12,14,0,7,</item>
<item>12,14,24,7,</item>
<item>24,7,12,0,</item>
<item>0,7,12,0,</item>
</string-array>
</resources>
There is a PtrHandler
, by which you can refresh the data.
public interface PtrHandler {
/**
* Check can do refresh or not. For example the content is empty or the first child is in view.
* <p/>
* {@link in.srain.cube.views.ptr.PtrDefaultHandler#checkContentCanBePulledDown}
*/
public boolean checkCanDoRefresh(final PtrFrameLayout frame, final View content, final View header);
/**
* When refresh begin
*
* @param frame
*/
public void onRefreshBegin(final PtrFrameLayout frame);
}
An example:
ptrFrame.setPtrHandler(new PtrHandler() {
@Override
public void onRefreshBegin(PtrFrameLayout frame) {
frame.postDelayed(new Runnable() {
@Override
public void run() {
ptrFrame.refreshComplete();
}
}, 1800);
}
@Override
public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) {
return PtrDefaultHandler.checkContentCanBePulledDown(frame, content, header);
}
});
You can add a PtrUIHandler
to PtrFrameLayout
to implement any UI effect you want.
public interface PtrUIHandler {
/**
* When the content view has reached top and refresh has been completed, view will be reset.
*
* @param frame
*/
public void onUIReset(PtrFrameLayout frame);
/**
* prepare for loading
*
* @param frame
*/
public void onUIRefreshPrepare(PtrFrameLayout frame);
/**
* perform refreshing UI
*/
public void onUIRefreshBegin(PtrFrameLayout frame);
/**
* perform UI after refresh
*/
public void onUIRefreshComplete(PtrFrameLayout frame);
public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, int oldPosition, int currentPosition, float oldPercent, float currentPercent);
}
work with ViewPager: disableWhenHorizontalMove()
work with LongPressed, setInterceptEventWhileWorking()
Please fell free to contact me if there is any problem when using the library.
twitter: https://twitter.com/liaohuqiu
weibo: http://weibo.com/liaohuqiu
blog: http://www.liaohuqiu.net
About how to use cube-sdk / Ultra Ptr: 271918140 (cube-sdk)
This the rule for our tribes, please read it before you request to join: liaohuqiu/qq-tribe-rule
For those who like thinking independently and are good at solving problem independently. Please join us, we are all here on Slack: