国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android DynamicGrid實現拖曳交換位置功能

2019-12-12 00:46:21
字體:
來源:轉載
供稿:網友

Android DynamicGrid是一個第三方開源項目,DynamicGrid在github上的項目主頁是:DynamicGrid

它實現在一個網格布局內,拖曳任意子view實現動態的交換位置,這很類似手機的桌面,手機桌面的圖標,均可自由拖曳實現擺放位置的交換,如動圖所示:

DynamicGrid使用起來簡單,需要注意:

(1)最好使用完全的BaseDynamicGridAdapter構造BaseDynamicGridAdapter構造函數,否則可能無法正常工作。
(2)通常以長按模式觸發拖曳交換位置操作,所以一般在onItemLongClick里面startEditMode開始編輯。
(3)按返回鍵取消拖曳操作,代碼比較固定,重寫onBackPressed:

 @Override  public void onBackPressed() {     //此處將取消拖曳編輯模式,取消方式為按返回鍵。    if (gridView.isEditMode()) {      gridView.stopEditMode();    } else {      super.onBackPressed();    }  }

給出一個完整的代碼例子:

package zhangphil.app; import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.TextView;import android.widget.Toast; import org.askerov.dynamicgrid.BaseDynamicGridAdapter;import org.askerov.dynamicgrid.DynamicGridView; import java.util.ArrayList;import java.util.List; public class MainActivity extends Activity {   private DynamicGridView gridView;   @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);     gridView = (DynamicGridView) findViewById(R.id.dynamicgrid);     ArrayList lists = new ArrayList();    for (int i = 0; i < 100; i++) {      lists.add("項目-" + i);    }     //最好以完全方式構造,否則可能無法正常工作    MyAdapter adapter = new MyAdapter(this, lists, 3);    gridView.setAdapter(adapter);     gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {      @Override      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {         //長按觸發拖曳交換位置操作。        gridView.startEditMode(position);         return true;      }    });     gridView.setOnDragListener(new DynamicGridView.OnDragListener() {      @Override      public void onDragStarted(int position) {        //Toast.makeText(getApplication(), "drag started at position " + position,Toast.LENGTH_SHORT).show();      }       @Override      public void onDragPositionsChanged(int oldPosition, int newPosition) {        Toast.makeText(getApplication(), String.format("from %d to %d", oldPosition, newPosition), Toast.LENGTH_SHORT).show();      }    });  }   @Override  public void onBackPressed() {     //此處將取消拖曳編輯模式,取消方式為按返回鍵。    if (gridView.isEditMode()) {      gridView.stopEditMode();    } else {      super.onBackPressed();    }  }   private class MyAdapter extends BaseDynamicGridAdapter {     @Override    public View getView(int i, View view, ViewGroup viewGroup) {      View v = LayoutInflater.from(getContext()).inflate(android.R.layout.simple_list_item_1, null);      TextView text = (TextView) v.findViewById(android.R.id.text1);      text.setText("項目-" + i);      v.setPadding(10, 10, 10, 10);      return v;    }     public MyAdapter(Context context, List<?> items, int columnCount) {      super(context, items, columnCount);    }  }}

布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:layout_width="match_parent"  android:layout_height="match_parent">   <org.askerov.dynamicgrid.DynamicGridView    android:id="@+id/dynamicgrid"    android:layout_height="wrap_content"    android:layout_width="match_parent"    android:numColumns="3"/></LinearLayout>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 驻马店市| 卓尼县| 陆川县| 德庆县| 合水县| 成安县| 崇礼县| 印江| 甘肃省| 福海县| 通海县| 安丘市| 湟源县| 西吉县| 津南区| 甘孜| 大姚县| 高要市| 巴青县| 亳州市| 丰原市| 黑龙江省| 溆浦县| 丰城市| 六枝特区| 长武县| 台北市| 宁夏| 灵璧县| 石棉县| 太白县| 南雄市| 万源市| 安乡县| 衡阳市| 肇源县| 株洲市| 镇巴县| 延边| 闽清县| 虹口区|