Android图片裁剪Demo

代码没几行 注释写的很详细了

MainActivity

package com.example.fuck;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;

//测试手机MX4
public class MainActivity extends Activity implements OnClickListener {
    public static final int PICK_REQUEST_CODE = 0X1;
    public static final int GET_REQUEST_CODE = 0X2;
    public static final int CROP_REQUEST_CODE = 0X3;
    public static final int PICTURE_REQUEST_CODE = 0x4;

    private Button button1, button2, button3;
    private ImageView image;
    private EditText editText;

    private Uri mImageUri = Uri.fromFile(new File("/sdcard/fuck.jpg"));

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);
        image = (ImageView) findViewById(R.id.image);
        editText = (EditText) findViewById(R.id.edittext);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            startActionPick();
            break;
        case R.id.button2:
            startActionGetContent();
            break;
        case R.id.button3:
            takePicture();
            break;

        default:
            break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Uri uri = mImageUri;
        if (data == null) {
            Log.e("fuck", 111 + "-->data:null");
        } else {
            uri = data.getData();
            Object object = data.getParcelableExtra("data");
            if (uri == null) {
                Log.e("fuck", requestCode + "-->uri:null");
            } else {
                Log.e("fuck", requestCode + "-->data:" + uri.getPath());
            }
            if (object == null) {
                Log.e("fuck", requestCode + "-->object:null");
            } else {
                Log.e("fuck", requestCode + "-->data:" + object);
            }
        }
        int width = Integer.parseInt(editText.getText().toString());
        switch (requestCode) {
        case PICK_REQUEST_CODE:
            cropImageUri(uri, width, width, CROP_REQUEST_CODE);
            break;
        case GET_REQUEST_CODE:
            cropImageUri(uri, width, width, CROP_REQUEST_CODE);
            break;
        case PICTURE_REQUEST_CODE:
            cropImageUri(uri, width, width, CROP_REQUEST_CODE);
            break;
        case CROP_REQUEST_CODE:
            image.setImageBitmap((Bitmap) data.getParcelableExtra("data"));
            break;

        default:
            break;
        }

    }

    private void startActionPick() {
        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        intent.putExtra("return-data", true);// 无论是否设置都不会返回bitmap对象
        startActivityForResult(intent, PICK_REQUEST_CODE);
    }

    private void startActionGetContent() {
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT,
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        intent.setType("image/*");
        intent.putExtra("return-data", true);// 无论是否设置都不会返回bitmap对象
        startActivityForResult(intent, GET_REQUEST_CODE);
    }

    private void takePicture() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);// 拍照后保存的路径
        startActivityForResult(intent, PICTURE_REQUEST_CODE);
    }

    private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");// 裁剪图像
        intent.putExtra("crop", "true"); // 没发现什么不同
        intent.putExtra("aspectX", 1);// 裁剪框的X比例
        intent.putExtra("aspectY", 1);// 裁剪框的Y比例

        intent.putExtra("outputX", outputX);// 输出图像的像素宽
        intent.putExtra("outputY", outputY);// 输出图像的像素高

        // 是否保持比例,当你裁剪的大小和outputx和outputy不一致是是否缩放比例
        // 如果不缩放比例,如果输出像素过小则只会显示一部分。过大同理
        intent.putExtra("scale", true);

        intent.putExtra(MediaStore.EXTRA_OUTPUT, mImageUri);// 输出裁剪后的图像

        intent.putExtra("return-data", true);// 是否返回bitmap图像,(uri是我们穿进去的所以不需要返回)

        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true); // no face detection
        startActivityForResult(intent, requestCode);
    }

}
<LinearLayout 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"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="裁剪后的图片宽高:"/>

        <EditText
            android:id="@+id/edittext"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="number" 
            android:text="300"/>
    </LinearLayout>

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="ACTION_PICK" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="ACTION_GET_CONTENT" />

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="TAKE_PICTURE" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

爬虫抓我:http://blog.csdn.net/zheng5229875/article/details/48354479

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android播放图片demo的实现可以使用Android的多媒体框架和UI控件。首先,需要在Android项目中创建一个新的活动或片段。 在活动或片段的布局文件中,可以使用ImageView控件来展示图片。可以通过在布局文件中添加ImageView控件,并设置其宽度、高度和其他属性来实现。 在Activity或Fragment的Java代码中,可以使用Java的多媒体框架来加载和播放图片。首先,需要从资源文件或外部存储中获取图片的位置,并将其转换为Bitmap对象。可以使用 BitmapFactory 类来实现这一步骤。 接下来,可以将 Bitmap 对象设置给 ImageView 控件来显示图片。可以使用 ImageView 的 setImageBitmap() 方法来实现。 如果需要实现循环播放多张图片,可以使用定时器或动画来切换不同的图片。可以使用 Android 的动画系统或计时器来实现这一功能。 如果要实现点击图片时切换下一张图片的功能,可以在图片的点击事件中切换图片。可以添加一个点击事件监听器到 ImageView 控件上,并在监听器中切换显示的图片。 最后,可以运行应用程序,并在手机或虚拟设备上观察图片的播放效果。可以调整代码中的参数和逻辑来实现不同的图片播放效果。 总之,Android播放图片demo可以使用多媒体框架和UI控件来实现,在布局文件和Java代码中配置和设置图片的显示和播放。可以使用定时器或动画来实现循环播放和点击切换图片的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值