From cc33a0cceaca836be06e07af54a0d18d5f75541b Mon Sep 17 00:00:00 2001 From: Yuji Konishi Date: Tue, 8 May 2012 20:22:20 +0900 Subject: [PATCH] init --- .../src/com/yuji/ef/EverFolderActivity.java | 262 +++++++++--------- .../src/com/yuji/ef/IconFrameLayout.java | 307 ++++++++++++++++++--- 2 files changed, 401 insertions(+), 168 deletions(-) diff --git a/source/workspace/EverFolder/src/com/yuji/ef/EverFolderActivity.java b/source/workspace/EverFolder/src/com/yuji/ef/EverFolderActivity.java index af1e396..671ff36 100644 --- a/source/workspace/EverFolder/src/com/yuji/ef/EverFolderActivity.java +++ b/source/workspace/EverFolder/src/com/yuji/ef/EverFolderActivity.java @@ -21,8 +21,8 @@ import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.ScrollView; -public class EverFolderActivity extends Activity implements OnTouchListener, - OnLongClickListener { +public class EverFolderActivity extends Activity /*implements OnTouchListener, + OnLongClickListener*/ { private IconFrameLayout layout; private IconScrollView scrollView; private IconImageView target = null; @@ -44,6 +44,7 @@ public class EverFolderActivity extends Activity implements OnTouchListener, scrollView = (IconScrollView) findViewById(R.id.scrollView); layout = (IconFrameLayout) findViewById(R.id.frameLayout); + layout.setScrollView(scrollView); //layout.setClickable(false); // layout = new FrameLayout(this); // setContentView(layout); @@ -121,8 +122,8 @@ public class EverFolderActivity extends Activity implements OnTouchListener, // layout.addView(v, new ViewGroup.LayoutParams(WC, WC)); // v.layout(x, y, x + v.getWidth(), y + v.getHeight()); - v.setOnTouchListener(this); - v.setOnLongClickListener(this); + //v.setOnTouchListener(this); + //v.setOnLongClickListener(this); } @Override @@ -168,131 +169,132 @@ public class EverFolderActivity extends Activity implements OnTouchListener, // startActivity(intent); } - public boolean onTouch(View v, MotionEvent event) { - int x = (int) event.getRawX(); - int y = (int) event.getRawY(); - - // FOO - if (!(v instanceof IconImageView)) { - return true; - } - IconImageView obj = (IconImageView) v; - - if (target == null) { - target = obj; - -// scrollView.setOnTouchListener(new OnTouchListener() { -// @Override -// public boolean onTouch(View v, MotionEvent event) { -// return true; +// @Override +// public boolean onTouch(View v, MotionEvent event) { +// int x = (int) event.getRawX(); +// int y = (int) event.getRawY(); +// +// // FOO +// if (!(v instanceof IconImageView)) { +// return true; +// } +// IconImageView obj = (IconImageView) v; +// +// if (target == null) { +// target = obj; +// +//// scrollView.setOnTouchListener(new OnTouchListener() { +//// @Override +//// public boolean onTouch(View v, MotionEvent event) { +//// return true; +//// } +//// }); +// } else if (target != obj) { +// return true; +// } +// if (event.getAction() == MotionEvent.ACTION_MOVE) { +// if (!longClickFlg) { +// return false; +// } +// int diffX = offsetX - x; +// int diffY = offsetY - y; +// +// currentX -= diffX; +// currentY -= diffY; +// // currentX = x;; +// // currentY = y; +// obj.layout(currentX, currentY, currentX + obj.getWidth(), currentY +// + obj.getHeight()); +// +// offsetX = x; +// offsetY = y; +// +// if (dest == null) { +// Rect rect = new Rect(); +// int size = layout.getChildCount(); +// for (int i = 0; i < size; i++) { +// IconImageView vv = (IconImageView) layout.getChildAt(i); +// vv.getHitRect(rect); +// if (rect.contains(x - layout.getLeft(), +// y - layout.getLeft())) { +// dest = vv; +// dest.setAlpha(32); +// break; +// } // } -// }); - } else if (target != obj) { - return true; - } - if (event.getAction() == MotionEvent.ACTION_MOVE) { - if (!longClickFlg) { - return false; - } - int diffX = offsetX - x; - int diffY = offsetY - y; - - currentX -= diffX; - currentY -= diffY; - // currentX = x;; - // currentY = y; - obj.layout(currentX, currentY, currentX + obj.getWidth(), currentY - + obj.getHeight()); - - offsetX = x; - offsetY = y; - - if (dest == null) { - Rect rect = new Rect(); - int size = layout.getChildCount(); - for (int i = 0; i < size; i++) { - IconImageView vv = (IconImageView) layout.getChildAt(i); - vv.getHitRect(rect); - if (rect.contains(x - layout.getLeft(), - y - layout.getLeft())) { - dest = vv; - dest.setAlpha(32); - break; - } - } - } else { - Rect rect = new Rect(); - - dest.getHitRect(rect); - if (!rect.contains(x - layout.getLeft(), y - layout.getLeft())) { - dest.setAlpha(255); - dest = null; - } - } - } else if (event.getAction() == MotionEvent.ACTION_DOWN) { - offsetX = x; - offsetY = y; - // TODO - currentX = obj.getLeft(); - currentY = obj.getTop(); - - target.setColorFilter(Color.RED, Mode.LIGHTEN); - - scrollView.setScrollable(false); - return false; - } else if (event.getAction() == MotionEvent.ACTION_UP) { - if (!longClickFlg) { - return false; - } - obj.setAnimation(anime); - obj.startAnimation(anime); - // obj.setVisibility(View.GONE); - if (dest == null) { - // Á‚·ê‡ - // layout.removeView(obj); - - // ƒLƒƒƒ“ƒZƒ‹ - int srcX = target.getInitX(); - int srcY = target.getInitY(); - target.layout(srcX, srcY, srcX + target.getWidth(), srcY - + target.getHeight()); - target.setAlpha(255); - } else { - int srcX = target.getInitX(); - int srcY = target.getInitY(); - int dstX = dest.getInitX(); - int dstY = dest.getInitY(); - - target.layout(dstX, dstY, dstX + target.getWidth(), dstY - + target.getHeight()); - target.init(dstX, dstY); - target.setAlpha(255); - dest.layout(srcX, srcY, srcX + dest.getWidth(), - srcY + dest.getHeight()); - dest.init(srcX, srcY); - dest.setAlpha(255); - } - - // bt2.getHitRect(rect); - // if (rect.contains(x, y)) { - // isBt2Click = true; - // } - longClickFlg = false; - } - - return true; - } - - @Override - public boolean onLongClick(View view) { - if (!(view instanceof IconImageView)) { - return true; - } - IconImageView v = (IconImageView) view; - v.setAlpha(128); - v.clearColorFilter(); - - longClickFlg = true; - return true; - } +// } else { +// Rect rect = new Rect(); +// +// dest.getHitRect(rect); +// if (!rect.contains(x - layout.getLeft(), y - layout.getLeft())) { +// dest.setAlpha(255); +// dest = null; +// } +// } +// } else if (event.getAction() == MotionEvent.ACTION_DOWN) { +// offsetX = x; +// offsetY = y; +// // TODO +// currentX = obj.getLeft(); +// currentY = obj.getTop(); +// +// target.setColorFilter(Color.RED, Mode.LIGHTEN); +// +// scrollView.setScrollable(false); +// return false; +// } else if (event.getAction() == MotionEvent.ACTION_UP) { +// if (!longClickFlg) { +// return false; +// } +// obj.setAnimation(anime); +// obj.startAnimation(anime); +// // obj.setVisibility(View.GONE); +// if (dest == null) { +// // Á‚·ê‡ +// // layout.removeView(obj); +// +// // ƒLƒƒƒ“ƒZƒ‹ +// int srcX = target.getInitX(); +// int srcY = target.getInitY(); +// target.layout(srcX, srcY, srcX + target.getWidth(), srcY +// + target.getHeight()); +// target.setAlpha(255); +// } else { +// int srcX = target.getInitX(); +// int srcY = target.getInitY(); +// int dstX = dest.getInitX(); +// int dstY = dest.getInitY(); +// +// target.layout(dstX, dstY, dstX + target.getWidth(), dstY +// + target.getHeight()); +// target.init(dstX, dstY); +// target.setAlpha(255); +// dest.layout(srcX, srcY, srcX + dest.getWidth(), +// srcY + dest.getHeight()); +// dest.init(srcX, srcY); +// dest.setAlpha(255); +// } +// +// // bt2.getHitRect(rect); +// // if (rect.contains(x, y)) { +// // isBt2Click = true; +// // } +// longClickFlg = false; +// } +// +// return true; +// } +// +// @Override +// public boolean onLongClick(View view) { +// if (!(view instanceof IconImageView)) { +// return true; +// } +// IconImageView v = (IconImageView) view; +// v.setAlpha(128); +// v.clearColorFilter(); +// +// longClickFlg = true; +// return true; +// } } \ No newline at end of file diff --git a/source/workspace/EverFolder/src/com/yuji/ef/IconFrameLayout.java b/source/workspace/EverFolder/src/com/yuji/ef/IconFrameLayout.java index 684f3e2..9103f5e 100644 --- a/source/workspace/EverFolder/src/com/yuji/ef/IconFrameLayout.java +++ b/source/workspace/EverFolder/src/com/yuji/ef/IconFrameLayout.java @@ -1,12 +1,36 @@ package com.yuji.ef; +import java.util.ArrayList; +import java.util.List; + import android.content.Context; +import android.graphics.Color; +import android.graphics.PorterDuff.Mode; +import android.graphics.Rect; import android.util.AttributeSet; -import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.View; +import android.view.View.OnLongClickListener; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.view.animation.Animation.AnimationListener; import android.widget.FrameLayout; -public class IconFrameLayout extends FrameLayout { +public class IconFrameLayout extends FrameLayout implements OnLongClickListener { + private IconImageView target = null; + private IconImageView dest = null; + + private Animation anime; + private int startX; + private int startY; + private int currentX; + private int currentY; + private int offsetX; + private int offsetY; + private boolean longClickFlg = false; + private IconScrollView scrollView; + private Context context = this.getContext(); + public IconFrameLayout(Context context) { super(context); } @@ -29,44 +53,251 @@ public class IconFrameLayout extends FrameLayout { IconImageView vv = (IconImageView) this.getChildAt(i); int x2 = vv.getInitX(); int y2 = vv.getInitY(); - //vv.init(x2, y2); + // vv.init(x2, y2); vv.layout(x2, y2, x2 + vv.getWidth(), y2 + vv.getHeight()); } } -// @Override -// public boolean onTouchEvent(MotionEvent event) { -//// return super.onTouchEvent(event); -// return false; -// } - -// @Override -// public boolean onKeyDown(int keyCode, KeyEvent event) { -// return true; -// } -// -// @Override -// public boolean onKeyLongPress(int keyCode, KeyEvent event) { -// return true; -// } -// -// @Override -// public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event) { -// return true; -// } -// -// @Override -// public boolean onKeyPreIme(int keyCode, KeyEvent event) { -// return true; -// } -// -// @Override -// public boolean onKeyShortcut(int keyCode, KeyEvent event) { -// return true; -// } -// -// @Override -// public boolean onKeyUp(int keyCode, KeyEvent event) { -// return true; -// } + private View getView(int x, int y, View v, List list) { + Rect rect = new Rect(); + + if (v != null) { + rect.left = v.getLeft(); + rect.top = v.getTop(); + rect.right = rect.left + v.getWidth(); + rect.bottom = rect.top + v.getHeight(); + + if (rect.contains(x, y)) { + return v; + } + } + for (View view : list) { + if (view != v) { + rect.left = view.getLeft(); + rect.top = view.getTop(); + rect.right = rect.left + view.getWidth(); + rect.bottom = rect.top + view.getHeight(); + if (rect.contains(x, y)) { + return view; + } + } + } + return null; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + try { + int x = (int) event.getRawX(); + int y = (int) event.getRawY(); + + x -= scrollView.getLeft(); + y -= scrollView.getTop(); + + // FOO + List list = new ArrayList(); + int size = this.getChildCount(); + for (int i = 0; i < size; i++) { + IconImageView v = (IconImageView) this.getChildAt(i); + list.add(v); + } + View v = getView(x, y, target, list); +// if (v == null) { +// return false; +// } + IconImageView obj = (IconImageView) v; + + if (target == null) { + target = obj; + + // scrollView.setOnTouchListener(new OnTouchListener() { + // @Override + // public boolean onTouch(View v, MotionEvent event) { + // return true; + // } + // }); +// } else if (target != obj) { +// return true; + } + if (target == null){ + return super.onTouchEvent(event); + } + if (event.getAction() == MotionEvent.ACTION_MOVE) { + if (!longClickFlg) { + return false; + } + obj = target; + + int diffX = offsetX - x; + int diffY = offsetY - y; + + currentX -= diffX; + currentY -= diffY; + // currentX = x;; + // currentY = y; + obj.layout(currentX, currentY, currentX + obj.getWidth(), + currentY + obj.getHeight()); + + offsetX = x; + offsetY = y; + + if (dest == null) { + Rect rect = new Rect(); + for (int i = 0; i < size; i++) { + IconImageView vv = (IconImageView) list.get(i); + vv.getHitRect(rect); + if (rect.contains(x, y)) { + dest = vv; + dest.setAlpha(32); + break; + } + } + } else { + Rect rect = new Rect(); + + dest.getHitRect(rect); + if (!rect.contains(x, y)) { + dest.setAlpha(255); + dest = null; + } + } + } else if (event.getAction() == MotionEvent.ACTION_DOWN) { + obj = target; + + offsetX = x; + offsetY = y; + // TODO + currentX = obj.getLeft(); + currentY = obj.getTop(); + + target.setColorFilter(Color.RED, Mode.LIGHTEN); + + scrollView.setScrollable(false); + // return false; + } else if (event.getAction() == MotionEvent.ACTION_UP) { + if (!longClickFlg) { + return false; + } + obj = target; + + obj.setAnimation(anime); + obj.startAnimation(anime); + // obj.setVisibility(View.GONE); + if (dest == null) { + // Á‚·ê‡ + // layout.removeView(obj); + + // ƒLƒƒƒ“ƒZƒ‹ + int srcX = target.getInitX(); + int srcY = target.getInitY(); + target.layout(srcX, srcY, srcX + target.getWidth(), srcY + + target.getHeight()); + target.setAlpha(255); + } else { + int srcX = target.getInitX(); + int srcY = target.getInitY(); + int dstX = dest.getInitX(); + int dstY = dest.getInitY(); + + target.layout(dstX, dstY, dstX + target.getWidth(), dstY + + target.getHeight()); + target.init(dstX, dstY); + target.setAlpha(255); + dest.layout(srcX, srcY, srcX + dest.getWidth(), + srcY + dest.getHeight()); + dest.init(srcX, srcY); + dest.setAlpha(255); + } + + // bt2.getHitRect(rect); + // if (rect.contains(x, y)) { + // isBt2Click = true; + // } + longClickFlg = false; + } + + return super.onTouchEvent(event); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + @Override + public boolean onLongClick(View view) { + // if (!(view instanceof IconImageView)) { + // return true; + // } + // IconImageView v = (IconImageView) view; + if (target == null) { + return false; + } + IconImageView v = (IconImageView) target; + v.setAlpha(128); + v.clearColorFilter(); + + longClickFlg = true; + return true; + } + + public void setScrollView(IconScrollView scrollView) { + this.scrollView = scrollView; + this.setOnLongClickListener(this); + this.setLongClickable(true); + + anime = AnimationUtils.loadAnimation(context, R.anim.sample); + anime.setAnimationListener(new AnimationListener() { + public void onAnimationStart(Animation animation) { + } + + public void onAnimationRepeat(Animation animation) { + } + + public void onAnimationEnd(Animation animation) { + // if (isBt2Click) { + // bt2.performClick(); + // isBt2Click = false; + // } + target = null; + dest = null; + } + }); + } + + // @Override + // public boolean onTouchEvent(MotionEvent event) { + // // return super.onTouchEvent(event); + // return false; + // } + + // @Override + // public boolean onKeyDown(int keyCode, KeyEvent event) { + // return true; + // } + // + // @Override + // public boolean onKeyLongPress(int keyCode, KeyEvent event) { + // return true; + // } + // + // @Override + // public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent + // event) { + // return true; + // } + // + // @Override + // public boolean onKeyPreIme(int keyCode, KeyEvent event) { + // return true; + // } + // + // @Override + // public boolean onKeyShortcut(int keyCode, KeyEvent event) { + // return true; + // } + // + // @Override + // public boolean onKeyUp(int keyCode, KeyEvent event) { + // return true; + // } } -- 2.11.0