首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

兑现图片的拖拽效果

2012-08-26 
实现图片的拖拽效果最近项目里有个模块需要实现拖拽,分析了,发现在不同层内拖拽效果很难实现,要么就是效果

实现图片的拖拽效果

最近项目里有个模块需要实现拖拽,分析了,发现在不同层内拖拽效果很难实现,要么就是效果体验性很一般。

?

好不容易用了障眼法才解决,呵呵,分享下。

?

package com.nico;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.PixelFormat;import android.os.Bundle;import android.view.Gravity;import android.view.MotionEvent;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.view.View.OnTouchListener;import android.widget.ImageView;public class DragActivity extends Activity {ImageView imgview;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);final ImageView img = (ImageView) findViewById(R.id.img);final WindowManager wm = this.getWindowManager();final WindowManager.LayoutParams wlayout = new WindowManager.LayoutParams();wlayout.gravity = Gravity.TOP;wlayout.x = 0;wlayout.y = 0;wlayout.height = WindowManager.LayoutParams.WRAP_CONTENT;wlayout.width = WindowManager.LayoutParams.WRAP_CONTENT;wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;wlayout.format = PixelFormat.TRANSLUCENT;wlayout.windowAnimations = 0;img.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {int act = event.getAction();int rawx = (int) event.getRawX()-v.getRight()-v.getWidth();int rawy = (int) event.getRawY();wlayout.x = rawx;wlayout.y = rawy;switch (act) {case MotionEvent.ACTION_DOWN:ImageView newimg = new ImageView(DragActivity.this);img.setDrawingCacheEnabled(true);Bitmap bt = img.getDrawingCache();newimg.setImageBitmap(bt);imgview = newimg;wm.addView(imgview, wlayout);imgview.setVisibility(View.VISIBLE);break;case MotionEvent.ACTION_MOVE://wlayout.x = rawx;//wlayout.y = rawy;wm.updateViewLayout(imgview, wlayout);break;case MotionEvent.ACTION_UP:wm.removeView(imgview);if (imgview != null) {imgview.destroyDrawingCache();imgview = null;}break;}return true;}});}}

?

?

1 楼 antoon.nee 2010-11-29   楼主,你好。
这里为什么要用按位或运算呢?
wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

还有图片只能在竖直方向移动,水平方向为什么不能呢? 2 楼 hellorheaven 2010-12-06   antoon.nee 写道楼主,你好。
这里为什么要用按位或运算呢?
wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

还有图片只能在竖直方向移动,水平方向为什么不能呢?


图片可以随意移动的吧。

热点排行