图片随着手指动

MainActivity:

package com.example.day2_one;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;

public class MainActivity extends Activity {

    private ImageView image_view;
    float lastDistance = -1;
    float x0 = 0;
    float y0 = 0;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image_view=(ImageView) findViewById(R.id.image_view);
        image_view.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                int action=event.getAction();
                switch (action) {
                //触摸开始
                case MotionEvent.ACTION_UP:
                    image_view.setX(event.getX());
                    image_view.setY(event.getY());

                    break;
                case MotionEvent.ACTION_MOVE:
                    //得到触摸点的个数
                    int count=event.getPointerCount();
                    if(count>1){
                    //获得亮点的坐标差
                        float distanceX=event.getX(0)-event.getX(1);
                        float distanceY=event.getY(0)-event.getY(1);
                        //获得来那个两点之间的距离
                        float between=(float) Math.sqrt(distanceX*distanceY+distanceX*distanceY);
                        if(between<1){
                            lastDistance=between;
                        }else if((between-lastDistance)>5){
                            //放大
                            lastDistance=between;
                            //获得布局参数
                            RelativeLayout.LayoutParams parmars=(LayoutParams) image_view.getLayoutParams();
                            parmars.width=(int) (image_view.getWidth()*1.1f);
                            parmars.height=(int) (image_view.getHeight()*1.1f);
                            image_view.setLayoutParams(parmars);

                        }else if((lastDistance-between)>5){
                            lastDistance=between;
                            //获得布局参数
                            RelativeLayout.LayoutParams params=(LayoutParams) image_view.getLayoutParams();
                            params.width=(int) (image_view.getWidth()*0.9f);
                            params.height=(int) (image_view.getHeight()*0.9f);
                            image_view.setLayoutParams(params);

                        }

                    }else if(count==1){
                        image_view.setX(event.getX());
                        image_view.setY(event.getY());
                    }
                    break;

                default:
                    break;
                }

                return true;
            }
        });
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // TODO Auto-generated method stub
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;

}

}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
       android:src="@drawable/ic_launcher" />

</RelativeLayout>

menu文件:activity_main:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/menu_settings"/>

</menu>
时间: 2024-12-12 16:37:29

图片随着手指动的相关文章

JavaScript图片跟着鼠标动最终版

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> * { margin: 0; padding: 0; } body { height: 2000px; } img { position: absolute; } </style> <

Cocos2d-x 单点触摸--让我们用手指动起来的精灵

转载请注明出处:http://blog.csdn.net/oyangyufu/article/details/25656673 效果图: CCTouch类装载了触摸点的信息.包含触摸点的横纵坐标值和触摸点的ID号,如获取触摸点转GL坐标: CCPoint point = pTouch->getLocationInView(); point = CCDirector::sharedDirector()->convertToGL(point); 创建触摸事件流程:首先开启setTouchEnabl

android脚步---跟随手指动的小球

这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是重写onDraw方法,----该方法负责在该组件指定位置绘制一个小球. package org.crazyit.helloworld; import android.content.Context; import android.graphics.Canvas; import android.gra

Matlab从一系列图片导出AVI视频,导出GIF动图

平台:Win7,Matlab 2014a 从一系列图片导出AVI视频的M代码如下: clear all; % 清除变量 % 官方示例,命令窗口输入“doc VideoWriter” writerObj = VideoWriter('out.avi'); % 输出AVI文件名字,out.avi writerObj.FrameRate = 25; % 帧率,25fps writerObj.Quality = 90; % 质量,百分比,90% open(writerObj); for i = 1:1:

java 给图片和动图添加水印

这两天根据需求在做图片上传添加水印,实话说重来不知道java还可以这样操作,既然有个这要求我就去找资料研究了一番,现在把它分享一下,希望能帮到有需要的兄弟. 给普通图片添加水印和给动图添加水印是不一样的,给普通图片添加水印用的是java自带的方法写的,给动图使用了gif4j框架,这个框架在CSDN里面很多可以下载,建议下载破解版的,因为原来的jar包会有自带的一个水印是去不了的. import java.awt.*; import java.awt.image.BufferedImage; im

wex5 实战 手指触屏插件 hammer的集成与优劣

前言 前几天,给客户做了一个图片点击放大,很简单,客户说能不能双手指缩放图片呢? 想到了hammer,不管好用不好用,总得试. 网上居然没有像样的中文文档和成熟案例,有的文写的鬼都看不懂.还是自已动手吧. 一  效果演示: 双击或两根手指放大 鼠标或手指拖动 再双击图片复原 二  设计思路: 利用hammer.js  自带的api,监听手指事件,对图像的css样式重新定义来实现 三 hammer.js  实现代码与逻辑 1  图片对像id  data-scale属性手动设置,为了js写法方便 2

解决IE6背景图片有灰白背景的情况 转

前言:IE6不支持png背景透明或半透明.其解决方法有IE滤镜,纯粹的JavaScript,以及jQuery等,正所谓事非经过不知难,让png图片在IE6下背景透明显示只是第一步,如果对这些png图片做进一步的操作,往往会出现各类莫名的问题.而本篇文章讲详尽阐述png背景透明会出现哪些问题,一些自己的经验之谈和一些相关的拓展.内容较多,有一定的深度和广度,希望对大家有帮助. 一.可解决的方法 1. IE css 滤镜IE css滤镜中有一个使png背景透明的滤镜,JavaScript方法也是应用

Android图片查看器(图片可移动、缩放)

要实现图片在手指点击后移动和缩放有好几种方法,在这里是通过onTouch来实现的. 实例代码如下: 首先是在View中有一个ImageView <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_paren

动效-APP设计的肢体语言

引言:如果把APP比作一位美女,那么icon是她的证件照,界面是她的形体,而动效则是她的肢体语言. 在如今玲琅满目的App中,如何脱颖而出?设计师要考虑的,不光是产品如何更合理的展现结构与功能,更重要的是思考自己的App是否能做到简便易懂的同时,又给用户新颖感?此时,有限的屏幕空间紧靠文字的提示是不够的,App需要更多的新鲜血液--"动效设计".动效设计可以拓展空间内容,简化引导流程,降低学习成本,更重要的是给用户带来意想不到--类似于"Cool"的惊喜,它就像人类