帶拖放可移動的分頁網格:PagedDragDropGrid

jopen 10年前發布 | 21K 次閱讀 Android開發 移動開發 PagedDragDropGrid

一個Android ViewGroup,實現了一個拖放移動項目的分頁網格。支持 Android 2.2 (API 8) 以上。

用法:

定義一個適配器符合接口 PagedDragDropGridAdapter.java

public interface PagedDragDropGridAdapter {

    // Automatic child distribution
    public final static int AUTOMATIC = -1; 

    // Delete drop zone location TOP
    public final static int TOP = 1;

    // Delete drop zone location BOTTOM
    public final static int BOTTOM = 2;

    /**
     * Used to create the paging
     * 
     * @return the page count
     */
    public int pageCount();

    /**
     * Returns the count of item in a page
     * 
     * @param page index
     * @return item count for page
     */
    public int itemCountInPage(int page);

    /**
     * Returns the view for the item in the page
     * 
     * @param page index
     * @param item index
     * @return the view 
     */
    public View view(int page, int index);

    /**
     * The fixed row count (AUTOMATIC for automatic computing)
     * 
     * @return row count or AUTOMATIC
     */
    public int rowCount();

    /**
     * The fixed column count (AUTOMATIC for automatic computing)
     * 
     * @return column count or AUTOMATIC
     */
    public int columnCount();

    /**
     * Prints the layout in Log.d();
     */
    public void printLayout();

    /**
     * Swaps two items in the item list in a page
     * 
     * @param pageIndex
     * @param itemIndexA
     * @param itemIndexB
     */
    public void swapItems(int pageIndex, int itemIndexA, int itemIndexB);

    /**
     * Moves an item in the page on the left of provided the page
     * 
     * @param pageIndex
     * @param itemIndex
     */
    public void moveItemToPreviousPage(int pageIndex, int itemIndex);

    /**
     * Moves an item in the page on the right of provided the page
     * 
     * @param pageIndex
     * @param itemIndex
     */
    public void moveItemToNextPage(int pageIndex, int itemIndex);


    /**
     * deletes the item in page and at position
     * 
     * @param pageIndex
     * @param itemIndex
     */
    public void deleteItem(int pageIndex, int itemIndex);

    /** 
     * Returns the delete drop zone location.  
     * 
     * @return TOP or BOTTOM. 
     */
    public int deleteDropZoneLocation();

    /**
     * Tells the grid to show or not the remove drop zone when moving an item
     */
    public boolean showRemoveDropZone();
}

layout example.xml

<ca.laplanete.mobile.pageddragdropgrid.PagedDragDropGrid xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"/>

ExampleActivity.java

setContentView(R.layout.example);
PagedDragDropGrid gridview = (PagedDragDropGrid) findViewById(R.id.gridview);       
gridview.setAdapter(new ExamplePagedDragDropGridAdapter(this));

/* Optionally set an onClickListener */
gridview.setClickListener(this);

/* Optionally set an setOnPageChangedListener */
gridview.setOnPageChangedListener(new OnPageChangedListener() {            
    @Override
    public void onPageChanged(PagedDragDropGrid sender, int newPageNumber) {
            Toast.makeText(ExampleActivity.this, "Page changed to page " + newPageNumber, Toast.LENGTH_SHORT).show();                
        }
    });

項目主頁:http://www.baiduhome.net/lib/view/home/1390735358117

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!