`
jzhua2006
  • 浏览: 300711 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一个图片从上到下移动,在移动过程中,如果点击,那么可以拖拽图片,放开后继续向下移动

阅读更多

要求:一个图片从上到下移动,在移动过程中,如果点击,那么可以拖拽图片,放开后继续向下移动。
问题:当imageview.startAnimation(animation)之后,imageview实际上并没有移动。点击imageview的初始位置时,可以监听到onclick事件。但是点击移动中的图片时,就无法监听到onclick事件了。
想法:如果可以得到animation移动过程中的每个时刻的位置,再设置imageview的位置,这样,效果就是点击移动中的图片时能监听到onclick。

 

package com.tianlv.study.temp;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;

public class temp extends Activity {
   
private Handler mHandler = new Handler();

private Runnable mMoveImage = new Runnable(){

  public void run() {
   moveImage();
  }
 
};

private ImageView iView;
private int downMouseY;
private AbsoluteLayout.LayoutParams downImagePms;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        iView = (ImageView) findViewById(R.id.ImageView01);
       
        iView.setOnTouchListener(new OnTouchListener(){
   public boolean onTouch(View view, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_DOWN){
     Log.i("debug", "stop");
     downMouseY = (int) event.getRawY();
     downImagePms = (AbsoluteLayout.LayoutParams) iView.getLayoutParams();
     mHandler.removeCallbacks(mMoveImage);
    }

    if(event.getAction() == MotionEvent.ACTION_UP){
     Log.i("debug", "move");
     mHandler.postDelayed(mMoveImage, 500);
    }
   
    if(event.getAction() == MotionEvent.ACTION_MOVE){
     dragImage((int) event.getRawY()- downMouseY);
    }
    return true;
   }
  });
    }
   
    private void moveImage(){
     AbsoluteLayout.LayoutParams oldLayPms = (AbsoluteLayout.LayoutParams) iView.getLayoutParams();
     AbsoluteLayout.LayoutParams newLayPms = new AbsoluteLayout.LayoutParams(oldLayPms.width, oldLayPms.height, oldLayPms.x, oldLayPms.y+1);

     iView.setLayoutParams(newLayPms);
    
     mHandler.removeCallbacks(mMoveImage);
    
     if(newLayPms.y < 300){
      mHandler.postDelayed(mMoveImage, 500);
     }
    }
   
    private void dragImage(int y){
     AbsoluteLayout.LayoutParams newLayPms = new AbsoluteLayout.LayoutParams(downImagePms.width, downImagePms.height, downImagePms.x, downImagePms.y+y);

     iView.setLayoutParams(newLayPms);
    }
}

分享到:
评论

相关推荐

    解决OnNcLButtonUp不能响应的问题

    在窗口处于正常状态时(可以通过拖动标题栏来移动窗口),如果在标题栏上按下鼠标左键, 系统会捕获鼠标,所以直到放开鼠标左键后,窗口是不会收到鼠标消息的。 如果窗口处于最大化状态,或者在客户区按下鼠标、移...

    AD鼠标增强软件

    8、按中键向下移动,删除选中内容,相当于按Edit菜单里的DELETE项 针对Saber: 1. 向上滚动滚轮 --&gt; 放大,相当于"PageUp"键 2. 向下滚动滚轮 --&gt; 缩小,相当于"PageDown"键 针对PC Schematic(V11有测试)...

    Yale free 雅乐简谱打谱软件

    按住Shift 键,同时按下键盘的左右箭头,可以向左、右移动光标,每按一次移动一个 音符位置; 注:不按住Shift 键,按下键盘的左右箭头,如果移动到的位置有音符,默认会选中该 音符,同时隐藏光标; 2、选中 ...

    JAVA上百实例源码以及开源项目

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包2

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    计算机应用基础-作业题.doc

    一是移动鼠标到窗口上下左右边框上,当看到鼠标变成上下或左右双箭头时,按下鼠标 左键不要松开,然后拖动窗口边框到合适的地方放开鼠标左键。 二是移动鼠标到窗口任意一角当看到鼠标变成斜双箭头时,按下鼠标左键...

    java源码包---java 源码 大量 实例

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件...

    GSP5.exe

    移动虽有比较好的运动效果,但移动一次后便需恢复到原位,而《几何画板》中的动画功能却能很生动地连续表现运动效果。用动画可以非常方便地描画出运动物体的运动轨迹,而且轨迹的生成是动态的、逐步的,表现出轨迹...

    java源码包3

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    java源码包4

    通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件...

    基于JQuery的列表拖动排序实现代码

    拖动排序,从名字就不难想像,就是按住一行数据拖到想要的排序位置,保存新的排序队列。 思路 首先给列表行建立锚点,绑定mousedown和mouseup事件,当鼠标移动到想要插入的位置时,将对象行移动到目标行,然后对其...

    虚拟 DJ 混音器 Virtual DJ

    在“Mix Table(混音面盘)”区域有四个按钮,分别提供了不同的效果,比如单击第二个按钮,下方就会显示出Loop特效设置区,这里我们可以选择多种Loop添加到音乐中,利用这一功能可为音乐增加声音、弦乐、颤音、噪音等...

    Foundation Actionscript 3.0 Animation

    13.2.1移动一个关节 13.2.2移动两个关节 13.3自动运行 13.3.1创建自然的行走循环 13.3.2动态化 13.4 使它真正地行走 13.4.1给它一些空间 13.4.2加入重力 13.4.3控制碰撞 13.4.4控制反应 13.4.5屏幕折回 13.5小结 第...

    电子表格EXCEL教学设计.doc

    " " " " 向下拖动至末个单元格放开。 " " " " " " " "活动三:小组协作探究学习 " " " "大家上周完成的作品我都已经发到各小 " " " "组的电脑上,请大家结合我刚才介绍的 " " " "五个方面内容进行小组协作完成作业...

Global site tag (gtag.js) - Google Analytics