iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >android实现拖拽裁剪功能
  • 679
分享到

android实现拖拽裁剪功能

2024-04-02 19:04:59 679人浏览 薄情痞子
摘要

本文实例为大家分享了Android拖拽框,裁剪出图片的具体代码,供大家参考,具体内容如下 import android.graphics.Bitmap; import androi

本文实例为大家分享了Android拖拽框,裁剪出图片的具体代码,供大家参考,具体内容如下

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
 
import eebochina.com.testsomething.R;
 
public class DragTakePhoto extends AppCompatActivity implements View.OnTouchListener {
    ImageView takePhoto;
    ImageView takeImage;
    Button mButton;
    static final String tag = "takePhoto";
    RelativeLayout.LayoutParams mLayoutParams;
    int left, top, bottom, right;
    int x, y;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_drag_take_photo);
 
        takePhoto = (ImageView) findViewById(R.id.take_layout);
        takeImage = (ImageView) findViewById(R.id.take_image);
        mButton = (Button) findViewById(R.id.take_crop);
        takePhoto.setOnTouchListener(this);
        takePhoto.post(new Runnable() {
            @Override
            public void run() {
                Log.d(tag, "" + takePhoto.getX() + "  ," + takePhoto.getY() + " :" + takePhoto.getPivotX() + " " + takePhoto.getPivotY());
            }
        });
        mLayoutParams = (RelativeLayout.LayoutParams) takePhoto.getLayoutParams();
        final Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.take);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                float wd = (bitmap.getWidth() * 10000 / takeImage.getWidth()) / 10000f;
                float hd = (bitmap.getHeight() * 10000 / takeImage.getHeight()) / 10000f;
                Bitmap bitmap1 = Bitmap.createBitmap(bitmap, (int) (takePhoto.getX() * wd), (int) (takePhoto.getY() * hd), (int) (takePhoto.getWidth() * wd), (int) (takePhoto.getHeight() * hd));
                takePhoto.setImageBitmap(bitmap1);
            }
        });
 
 
    }
 
    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) takeImage.getLayoutParams();
        left = layoutParams.leftMargin;
        top = layoutParams.topMargin;
        right = takeImage.getWidth() - left - takePhoto.getWidth();
        bottom = takeImage.getHeight() - top - takePhoto.getHeight();
    }
 
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {
            case MotionEvent.ACTION_DOWN:
                x = (int) motionEvent.getRawX() - mLayoutParams.leftMargin;
                y = (int) motionEvent.getRawY() - mLayoutParams.topMargin;
                break;
            case MotionEvent.ACTION_MOVE:
                int movex = (int) (motionEvent.getRawX() - x);
                int movey = (int) (motionEvent.getRawY() - y);
                Log.d(tag, "x:" + movex + "  y:" + movey);
                if (movex < left) movex = left;
                if (movey < top) movey = top;
                if (movex > right) movex = right;
                if (movey > bottom) movey = bottom;
                mLayoutParams.leftMargin = movex;
                mLayoutParams.topMargin = movey;
                takePhoto.setLayoutParams(mLayoutParams);
                break;
        }
        takePhoto.invalidate();
        return true;
    }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<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="eebochina.com.testsomething.dragTake.DragTakePhoto">
 
    <ImageView
        android:id="@+id/take_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/take"
        android:layout_marginBottom="50dp"
        />
 
    <ImageView
        android:id="@+id/take_layout"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:background="@android:color/holo_blue_dark"
        />
 
    <Button
        android:id="@+id/take_crop"
        android:layout_width="200dp"
        android:layout_height="40dp"
        android:background="@android:color/holo_blue_dark"
        android:text="裁剪"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        />
</RelativeLayout>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: android实现拖拽裁剪功能

本文链接: https://www.lsjlt.com/news/149091.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android实现拖拽裁剪功能
    本文实例为大家分享了android拖拽框,裁剪出图片的具体代码,供大家参考,具体内容如下 import android.graphics.Bitmap; import androi...
    99+
    2022-11-13
  • Android实现裁剪照片功能
    本文实例为大家分享了Android实现裁剪照片功能的具体代码,供大家参考,具体内容如下 1.   从相册选择照片进行裁剪 从相册选择照片并裁剪: private void...
    99+
    2022-11-13
  • Android如何实现裁剪照片功能
    这篇文章主要介绍Android如何实现裁剪照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   从相册选择照片进行裁剪从相册选择照片并裁剪:private void cropFromGallery()...
    99+
    2023-06-29
  • Android图片裁剪功能实现代码
    在Android应用中,图片裁剪也是一个经常用到的功能。Android系统中可以用隐式意图调用系统应用进行裁剪,但是这样做在不同的手机可能表现出不同的效果,甚至在某些奇葩手机上...
    99+
    2022-06-06
    Android
  • Android自定义View实现照片裁剪框与照片裁剪功能
    本文所需要实现的就是这样一种有逼格的效果: 右上角加了个图片框,按下确定可以裁剪正方形区域里的图片并显示在右上角。 实现思路: 1:首先需要自定义一个ZoomImageVie...
    99+
    2022-06-06
    view Android
  • Android实现按钮拖拽还原功能
    具体代码如下所示: public class MainActivity extends AppCompatActivity { private ImageButton i...
    99+
    2022-06-06
    还原 按钮 Android
  • Android ImageView实现图片裁剪和显示功能
    首先在layout布局中设置按钮和一个ImageView <Button android:id="@+id/selectimagebtn" android:la...
    99+
    2022-06-06
    图片 Android
  • vuedraggable实现拖拽功能
    本文实例为大家分享了vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 项目需求 简单实现一个vue拖拽小案例,右侧选项区拖拽到左侧目标区域,拖动成功的不能再...
    99+
    2022-11-13
  • cropperjs实现裁剪图片功能
    本文实例为大家分享了cropperjs实现裁剪图片功能的具体代码,供大家参考,具体内容如下 cropperjs (裁剪图片) vue版本 // 下载 // npm install c...
    99+
    2022-11-13
  • Android实现相机拍摄、选择、图片裁剪功能
    最近的一些学习心得: 功能实现:点击圆形头像之后可以实现相册上传或者开启相机,然后把得到的图片经过剪裁,把剪裁过的图片设置为头像的背景图 步骤:第一步:自定义一个类,继承Ima...
    99+
    2022-06-06
    选择 图片 相机 Android
  • HTML5中canvas如何实现移动端上传头像拖拽裁剪效果
    这篇文章将为大家详细讲解有关HTML5中canvas如何实现移动端上传头像拖拽裁剪效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 html部分: <!DOC...
    99+
    2022-10-19
  • vue实现图片拖拽功能
    本文实例为大家分享了vue实现图片拖拽功能的具体代码,供大家参考,具体内容如下 1、主要涉及到的元素知识,示意图: 2、js代码部分: directives: { dr...
    99+
    2022-11-12
  • js如何实现拖拽功能
    这篇文章主要为大家展示了“js如何实现拖拽功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js如何实现拖拽功能”这篇文章吧。效果图:(红色方块可任意拖动)代码...
    99+
    2022-10-19
  • vue实现拖拽窗口功能
    本文实例为大家分享了vue拖拽窗口简单实现代码,供大家参考,具体内容如下 效果 实现代码 <template>   <transition>     <...
    99+
    2022-11-13
  • iOS实现UIButton的拖拽功能
    本文实例为大家分享了iOS实现UIButton拖拽功能的具体代码,供大家参考,具体内容如下 在APP界面中,把资讯等功能设置为悬浮的Button并且能够让用户自己拖拽调整位置很常用。...
    99+
    2022-11-13
    iOS UIButton 拖拽
  • vuedraggable实现简单拖拽功能
    本文实例为大家分享了vuedraggable实现拖拽功能的具体代码,供大家参考,具体内容如下 一、下载依赖 npm i -S vuedraggable 二、代码块 <templ...
    99+
    2022-11-13
  • vuedraggable怎么实现拖拽功能
    这篇文章主要介绍了vuedraggable怎么实现拖拽功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vuedraggable怎么实现拖拽功能文章都会有所收获,下面我们一起来看看吧。一、下载依赖npm&nbs...
    99+
    2023-06-29
  • Vue.Draggable拖拽功能怎么实现
    这篇文章主要讲解了“Vue.Draggable拖拽功能怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue.Draggable拖拽功能怎么实现”吧!使用cmd命令在项目根目录下下载安...
    99+
    2023-07-04
  • 基于JavaScript实现图片裁剪功能
    目录一、图片文件的上传和读取二、图片展示和蒙层处理CSS clip-path三、裁剪框展示裁剪框的缩放点cursor 鼠标样式四、裁剪框移动事件五、裁剪框缩放操作六、完成裁剪功能dr...
    99+
    2023-02-21
    JavaScript实现图片裁剪JavaScript图片裁剪 JavaScript图片
  • Vue图片裁剪功能实现代码
    目录一、效果展示:1、表单的图片上传项:2、裁剪框页面二、代码部分1、首先安装Vue-Cropper,基于此组件的基础上开发的裁剪页面2、裁剪弹窗的组件编写:3、【图片上传表单项】组...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作