成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android源碼下載:桌面APP

移動開發 Android
該源碼是基于Android系統的Launcher原理進行設計和編寫。主要包含以下功能模塊:利用自定義GridView(或繼承ViewGroup)實現GridView控件的拖動;GridView長按拖動的動畫效果;GridView切屏拖動;Activity不同生命周期對GridView數據的刷新及保存;數據庫DBUtil的使用。

支持平臺:Android

運行環境:Eclipse

開發語言:Java

開發工具:Eclipse

源碼大小:2.99MB

源碼下載地址:http://down.51cto.com/data/1984783

源碼簡介

該源碼是基于Android系統的Launcher原理進行設計和編寫。

主要包含以下功能模塊:

1、利用自定義GridView(或繼承ViewGroup)實現GridView控件的拖動;

2、GridView長按拖動的動畫效果;

3、GridView切屏拖動;

4、Activity不同生命周期對GridView數據的刷新及保存;

5、數據庫DBUtil的使用。

源碼運行截圖

GridView單屏拖動動畫效果

GridView切屏時,拖動的動畫效果

GridView切屏后,對象交換

刪除GridView中某一對象

源碼片段

  1. //添加一個item 
  2. public void addItemView(MoveItem item) { 
  3.     mAdapter.add(item); 
  4.     this.addView(getView(mAdapter.getCount() - 1)); 
  5.     showEdit(isEditting); 
  6.     requestLayout(); 
  7.   
  8. @Override 
  9. public void addView(View child, int index, LayoutParams params) { 
  10.     child.setClickable(true); 
  11.     if (child.getVisibility() != View.VISIBLE) 
  12.         child.setVisibility(View.VISIBLE); 
  13.     super.addView(child, index, params); 
  14.     int pages = (int) Math.ceil(getChildCount() * 1.0 / itemPerPage); 
  15.     if (pages > totalPage) { 
  16.         if (this.onAddPage != null
  17.             onAddPage.onAddOrDeletePage(totalPage, true); 
  18.         totalPage = pages; 
  19.     } 
  20.   
  21. //繪制Container所有item 
  22. public void refreView() { 
  23.     removeAllViews(); 
  24.     for (int i = 0; i < mAdapter.getCount(); i++) { 
  25.         this.addView(getView(i)); 
  26.     } 
  27.     totalPage = (int) Math.ceil(getChildCount() * 1.0 / itemPerPage); 
  28.     requestLayout(); 
  29.   
  30. @Override 
  31. public void removeView(View view) { 
  32.     super.removeView(view); 
  33.     int pages = (int) Math.ceil(getChildCount() * 1.0 / itemPerPage); 
  34.     if (pages < totalPage) { 
  35.         if (this.onAddPage != null
  36.             onAddPage.onAddOrDeletePage(totalPage, false); 
  37.         totalPage = pages; 
  38.     } 
  39.   
  40. @Override 
  41. public void removeViewAt(int index) { 
  42.     super.removeViewAt(index); 
  43.     int pages = (int) Math.ceil(getChildCount() * 1.0 / itemPerPage); 
  44.     if (pages < totalPage) { 
  45.         totalPage = pages; 
  46.         if (this.onAddPage != null
  47.             onAddPage.onAddOrDeletePage(totalPage, false); 
  48.     } 
  49.   
  50.   
  51. @Override 
  52. public boolean dispatchTouchEvent(MotionEvent ev) { 
  53.     final int action = ev.getAction(); 
  54.     final float x = ev.getX(); 
  55.     final float y = ev.getY(); 
  56.     int thresholdX = DensityUtil.dip2px(mContext, 8); 
  57.     switch (action) { 
  58.     case MotionEvent.ACTION_DOWN: 
  59.         startX = (int) x; 
  60.         if (mScroller.isFinished()) { 
  61.             if (!mScroller.isFinished()) { 
  62.                 mScroller.abortAnimation(); 
  63.             } 
  64.             temChangPosition = dragPosition = pointToPosition((int) x, (int) y); 
  65.             dragOffsetX = (int) (ev.getRawX() - x); 
  66.             dragOffsetY = (int) (ev.getRawY() - y); 
  67.   
  68.             mLastMotionX = x; 
  69.             mLastMotionY = y; 
  70.             startX = (int) x; 
  71.         } 
  72.         break
  73.     case MotionEvent.ACTION_MOVE: 
  74.         int deltaX = (int) (mLastMotionX - x); 
  75.   
  76.         if (IsCanMove(deltaX) && Math.abs(deltaX) > thresholdX && Mode != Mode_Drag) { 
  77.             mLastMotionX = x; 
  78.             scrollBy(deltaX, 0); 
  79.             Mode = Mode_Scroll; 
  80.         } 
  81.   
  82.         if (Mode == Mode_Drag) { 
  83.             onDrag((int) x, (int) y); 
  84.         } 
  85.         break
  86.     case MotionEvent.ACTION_UP: 
  87.         float distance = ev.getRawX() - startX; 
  88.         if (distance > screenWidth / 6 && mCurScreen > 0 
  89.                 && Mode != Mode_Drag) { 
  90.             snapToScreen(mCurScreen - 1); 
  91.         } else if (distance < -screenWidth / 6 
  92.                 && mCurScreen < totalPage - 1 && Mode != Mode_Drag) { 
  93.             snapToScreen(mCurScreen + 1); 
  94.         } else if (Mode != Mode_Drag) { 
  95.             snapToDestination(); 
  96.         } 
  97.         if (Mode == Mode_Drag) { 
  98.             stopDrag(); 
  99.         } 
  100.         if (dragImageView != null) { 
  101.             animationMap.clear(); 
  102.             showDropAnimation((int) x, (int) y); 
  103.         } 
  104.         startX = 0
  105.         break
  106.     case MotionEvent.ACTION_CANCEL: 
  107.         showEdit(false); 
  108.     } 
  109.     super.dispatchTouchEvent(ev); 
  110.     return true
  111.   
  112. //開始拖動 
  113. private void startDrag(Bitmap bm, int x, int y, View itemView) { 
  114.     dragPointX = x - itemView.getLeft() + mCurScreen * screenWidth; 
  115.     dragPointY = y - itemView.getTop(); 
  116.     windowParams = new WindowManager.LayoutParams(); 
  117.   
  118.     windowParams.gravity = Gravity.TOP | Gravity.LEFT; 
  119.     windowParams.x = x - dragPointX + dragOffsetX; 
  120.     windowParams.y = y - dragPointY + dragOffsetY; 
  121.     windowParams.height = LayoutParams.WRAP_CONTENT; 
  122.     windowParams.width = LayoutParams.WRAP_CONTENT; 
  123.     windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 
  124.             | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE 
  125.             | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
  126.             | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 
  127.   
  128.     windowParams.format = PixelFormat.TRANSLUCENT; 
  129.     windowParams.windowAnimations = 0
  130.     windowParams.alpha = 0.8f; 
  131.   
  132.     ImageView iv = new ImageView(getContext()); 
  133.     iv.setImageBitmap(bm); 
  134.     dragBitmap = bm; 
  135.     windowManager = (WindowManager) getContext().getSystemService( 
  136.             Context.WINDOW_SERVICE); 
  137.     windowManager.addView(iv, windowParams); 
  138.     dragImageView = iv; 
  139.     Mode = Mode_Drag; 
  140.   
  141.     halfBitmapWidth = bm.getWidth() / 2
  142.     halfBitmapHeight = bm.getHeight() / 2
  143.   
  144.     for (int i = 0; i < getChildCount(); i++) { 
  145.         getChildAt(i).getBackground().setAlpha((int) (0.8f * 255)); 
  146.     } 
  147.   
  148. //停止拖動 
  149. private void stopDrag() { 
  150.     recoverChildren(); 
  151.     if (Mode == Mode_Drag) { 
  152.         if (getChildAt(dragPosition).getVisibility() != View.VISIBLE) 
  153.             getChildAt(dragPosition).setVisibility(View.VISIBLE); 
  154.         Mode = Mode_Free; 
  155.         Log.e("test""scroll menu move"); 
  156.         mContext.sendBroadcast(new Intent("com.stg.menu_move")); 
  157.     } 

源碼下載地址:http://down.51cto.com/data/1984783

責任編輯:閆佳明 來源: 網絡整理
相關推薦

2015-01-22 14:12:40

Android源碼APP啟動引導

2013-08-06 15:13:57

Android 4.3源碼

2011-09-07 14:20:42

Android Wid組件

2015-01-21 15:28:16

Android源碼新浪微博

2015-02-27 16:36:21

Android源碼屏幕畫筆Demo

2015-01-15 16:25:23

Android源碼Socket通信

2015-01-23 16:29:44

2015-01-20 17:09:21

Android源碼手勢鎖

2015-01-14 14:22:30

Android源碼游戲

2015-01-22 15:44:55

Android源碼音樂播放器

2021-08-10 20:41:33

AndroidApp流程

2015-01-21 16:07:57

Android源碼驗證碼倒計時

2013-05-28 10:39:44

Android開發移動開發

2015-02-27 16:03:26

Android源碼Bluetooth_4BLE藍牙通信

2014-12-30 11:04:39

懶人筆記

2015-01-22 16:04:06

iPhone

2014-12-17 15:23:03

Android網絡閱讀器源碼

2015-01-19 13:42:08

Android游戲源碼藍牙對戰五子棋

2018-01-08 14:31:09

Electron桌面APP前端

2011-03-04 09:39:36

Windows
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产视频不卡一区 | 国产精品亚洲综合 | 日韩精品一区二区三区中文字幕 | 国产精品毛片 | 国产精品成av人在线视午夜片 | 91欧美| 91麻豆精品国产91久久久更新资源速度超快 | 日日夜夜免费精品视频 | 久久艹av| 久久久久久国产精品 | 日韩视频在线免费观看 | www精品美女久久久tv | 久久99精品久久久久久噜噜 | 午夜av电影 | 久久久成人免费视频 | 婷婷综合在线 | 免费成人av | 伊人久久伊人 | 成人1区2区 | 成人性生交大片 | 国产精品久久久久久吹潮 | 欧美 日韩精品 | 亚洲精品中文字幕 | 久久久久久国产精品 | 久久久免费少妇高潮毛片 | 色小姐综合网 | 日韩一区二区在线观看 | 国际精品鲁一鲁一区二区小说 | 日韩一级电影免费观看 | 欧美理论片在线 | 天天操天天摸天天爽 | 国产午夜精品一区二区三区 | 岛国av在线免费观看 | 九九激情视频 | 亚洲一区欧美一区 | 亚洲精品国产成人 | 午夜影视免费片在线观看 | 中文字幕亚洲精品 | 国产三级网站 | 亚州精品天堂中文字幕 | 狠狠综合久久av一区二区小说 |