`
jzhua2006
  • 浏览: 304538 次
  • 性别: 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不能响应的问题

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

    EXCEL技巧200条+快捷键大全

    然后移动鼠标到边框处,当鼠标指针变成一个四个箭头标志时,按住“Shift”键的同时按下鼠标左键,拖动鼠标至要移动的目的区域(可以从鼠标指针右下方的黄色提示框中获知是否到达目标位置),放开鼠标左键即完成移动...

    AD鼠标增强软件

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

    Yale free 雅乐简谱打谱软件

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

    海康威视系列硬盘录像机常用设置与操作.pdf

    * 清除办法:如果不需要装硬盘,请到主菜单-异常处理中,把硬盘错这个异常类型的声音告警打“ × ” ;如果装了硬盘,请到主菜单-管理工具-硬盘管理中,把硬盘格式化;如果仍未解决,可能是硬盘坏,请更换硬盘。 三...

    EXCEL技巧大全.doc

    然后移动鼠标到边框处,当鼠标指针变成一个四个箭头标志时,按住“Shift”键的同时按下鼠标左键,拖动鼠标至要移动的目的区域(可以从鼠标指针右下方的黄色提示框中获知是否到达目标位置),放开鼠标左键即完成移动...

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

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

    ChemDraw教程:如何绘制反应方程式.pdf

    2. 选中鼠标沿单键从 C2 移动到 C4,然后放开鼠标,即可建立一个双键。 六、在结构上加原子标记 1. 用鼠标指向原子,见以下图左。 2. 双击原子,见以下图中。 3. 在文本框中输入字母 O,见以下图右。 七、复制...

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

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

    GSP5.exe

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

    java源码包2

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

    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)、如何保存公钥的字节数组、保存私钥到文件...

    visua stdio 2008 使用的技巧

    此时可以通过方向键来拖动窗体,移动到需要停靠的位置后,回车即可。 - **评论**:对于习惯使用键盘的人来说,这是一种较为便捷的方式,但可能不如直接使用鼠标来得方便。 #### #006 用键盘调整工具窗体的尺寸 - ...

    MakingThingsMove中文版

    - **Flash坐标系统**:左上角为原点,向下为正y轴。 - **三角形的边**:邻边、对边等。 ##### 3.3 三角函数 - **正弦**:对应角的对边与斜边的比例。 - **余弦**:对应角的邻边与斜边的比例。 - **正切**:对应角的...

    虚拟 DJ 混音器 Virtual DJ

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

Global site tag (gtag.js) - Google Analytics