AndroidPullMenu

Additional

Language
Java
Version
N/A
Created
Jan 4, 2015
Updated
Jul 8, 2016 (Retired)
Owner
Armando TBA (ShkurtiA)
Contributor
Armando TBA (ShkurtiA)
1
Activity
Badge
Generate
Download
Source code

Advertisement

AndroidPullMenu

AndroidPullMenu is an Open Source Android library that allows developers to easily create applications with pull menu. The aim of this library is to allow users that with a simple pull gesture to choose actions that they want to be executed.

This actions stand for refreshing options like refreshing the latest news, most viewed news, most commented views etc. or adding more actions inside view when you don’t want to implement these actions inside sliding menu. It can be implemented inside ScrollView, GridView, ListView.

For more information see the website: AndroidPullMenu

Simple Example:

The implementation should be easy if you have used this library: ActionBar-PullToRefresh

Java code:

public class MainActivity extends ActionBarActivity implements OnRefreshListener{

private PullMenuLayout mPullMenuLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_scrollview);
   
 // Now find the PullMenuLayout and set it up
    mPullMenuLayout = (PullMenuLayout) findViewById(R.id.pm_layout);
    
    ArrayList<String> mList = new ArrayList<String>();
    mList.add("Top Stories");
    mList.add("Most Recent");
    mList.add("Interest");
    mList.add("Refresh"); 
   
    // We can now setup the PullMenuLayout
    ActionBarPullMenu.from(this)
         .allChildrenArePullable()
         .listener(this)
         .setup(mPullMenuLayout,android.R.color.white,mList);
}

@Override
public void onRefreshStarted(View view, int position, String selectedField) {
  Toast.makeText(MainActivity.this, position + " # "+selectedField, Toast.LENGTH_SHORT).show();
    /**
     * Simulate Refresh with 4 seconds sleep
     */
    new AsyncTask<Void, Void, Void>() {

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Thread.sleep(Constants.SIMULATED_REFRESH_LENGTH);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Notify PullMenuLayout that the refresh has finished
            mPullMenuLayout.setRefreshComplete();
        }
    }.execute();
}   
}

XML Code:

  <al.shkurti.pullmenu.library.PullMenuLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/pm_layout"
      android:layout_width="match_parent"
      android:layout_height="match_parent">

  <ScrollView
      android:id="@+id/scrollview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:padding="8dp"
      android:scrollbarStyle="outsideInset">

      <TextView
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="@string/_text"/>

  </ScrollView>

</al.shkurti.pullmenu.library.PullMenuLayout>

Sample

Android pull menu sample apk

Developed by:

  • Armando Shkurti

Credits:

Inspired by:

Opinions for this concept:

https://news.layervault.com/stories/40871-pull-menu-menu-interaction-concept

Special Thanks

@chrisbanes: https://github.com/chrisbanes/ActionBar-PullToRefresh

@jpardogo and @astuetz: https://github.com/jpardogo/PagerSlidingTabStrip\

@castorflex: https://github.com/castorflex/SmoothProgressBar

License

Feel free to use it in your Android apps and also include the license in your app. I would be grateful if you would inform me about its usage

Copyright 2015 Armando Shkurti

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.