android 拖拽裁剪
来源:互联网 发布:mac os 10.10 u盘安装 编辑:程序博客网 时间:2024/05/04 14:45
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>
代码很少,以后有时间再添加更好的体验
0 0
- android 拖拽裁剪
- android 裁剪
- android学习日记10--裁剪裁剪 -
- Android视频裁剪(含裁剪View)
- Android 音乐裁剪器
- android系统图片裁剪
- Android 裁剪图像
- android裁剪图片
- android 图片裁剪
- 如何裁剪android 系统?
- android 裁剪图片
- Android大图裁剪解决办法
- Android 图片裁剪功能
- android 图片裁剪
- android图片裁剪
- android图片裁剪
- android图片的裁剪
- android Canvas 裁剪
- java基础(五)Hashcode的作用
- mongo3.2.7环境的搭建和全库备份、恢复
- PHP 设计模式
- Java集合中基于hash的容器
- HTML5表单的创建以及和php交互
- android 拖拽裁剪
- swift学习笔记 --- Closures
- ButterKnife失效的解决办法
- 10 种机器学习算法的要点(附 Python 和 R 代码)
- MySQL添加字段和修改字段的方法
- SpringMVC文件上传下载
- #学习笔记#gulp配置文件入门
- 成功解决RecyclerView Bug:IndexOutOfBoundsException: Inconsistency detected. Invalid item position
- tomcat+redis+nginx集群搭建