自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android源碼下載:桌面APP

移動(dòng)開(kāi)發(fā) Android
該源碼是基于Android系統(tǒng)的Launcher原理進(jìn)行設(shè)計(jì)和編寫(xiě)。主要包含以下功能模塊:利用自定義GridView(或繼承ViewGroup)實(shí)現(xiàn)GridView控件的拖動(dòng);GridView長(zhǎng)按拖動(dòng)的動(dòng)畫(huà)效果;GridView切屏拖動(dòng);Activity不同生命周期對(duì)GridView數(shù)據(jù)的刷新及保存;數(shù)據(jù)庫(kù)DBUtil的使用。

支持平臺(tái):Android

運(yùn)行環(huán)境:Eclipse

開(kāi)發(fā)語(yǔ)言:Java

開(kāi)發(fā)工具:Eclipse

源碼大?。?.99MB

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

源碼簡(jiǎn)介

該源碼是基于Android系統(tǒng)的Launcher原理進(jìn)行設(shè)計(jì)和編寫(xiě)。

主要包含以下功能模塊:

1、利用自定義GridView(或繼承ViewGroup)實(shí)現(xiàn)GridView控件的拖動(dòng);

2、GridView長(zhǎng)按拖動(dòng)的動(dòng)畫(huà)效果;

3、GridView切屏拖動(dòng);

4、Activity不同生命周期對(duì)GridView數(shù)據(jù)的刷新及保存;

5、數(shù)據(jù)庫(kù)DBUtil的使用。

源碼運(yùn)行截圖

GridView單屏拖動(dòng)動(dòng)畫(huà)效果

GridView切屏?xí)r,拖動(dòng)的動(dòng)畫(huà)效果

GridView切屏后,對(duì)象交換

刪除GridView中某一對(duì)象

源碼片段

  1. //添加一個(gè)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. //開(kāi)始拖動(dòng) 
  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. //停止拖動(dòng) 
  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

責(zé)任編輯:閆佳明 來(lái)源: 網(wǎng)絡(luò)整理
相關(guān)推薦

2015-01-22 14:12:40

Android源碼APP啟動(dòng)引導(dǎo)

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源碼屏幕畫(huà)筆Demo

2015-01-15 16:25:23

Android源碼Socket通信

2015-01-23 16:29:44

2015-01-20 17:09:21

Android源碼手勢(shì)鎖

2015-01-22 15:44:55

Android源碼音樂(lè)播放器

2015-01-14 14:22:30

Android源碼游戲

2021-08-10 20:41:33

AndroidApp流程

2015-01-21 16:07:57

Android源碼驗(yàn)證碼倒計(jì)時(shí)

2013-05-28 10:39:44

Android開(kāi)發(fā)移動(dòng)開(kāi)發(fā)

2015-02-27 16:03:26

Android源碼Bluetooth_4BLE藍(lán)牙通信

2014-12-30 11:04:39

懶人筆記

2014-12-17 15:23:03

Android網(wǎng)絡(luò)閱讀器源碼

2015-01-22 16:04:06

iPhone

2015-01-19 13:42:08

Android游戲源碼藍(lán)牙對(duì)戰(zhàn)五子棋

2015-01-20 17:01:30

Android源碼QQdemo

2013-05-28 14:39:25

Android開(kāi)發(fā)Android App
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)