android图片的缩放和旋转功能

这篇博客展示了如何在Android应用中实现图片的缩放和旋转功能。通过MainActivity.java和activity_main.xml两个文件的代码示例,演示了使用SeekBar控制图片缩放比例和旋转角度的操作,提供了一个在ImageView中显示并编辑图片的完整解决方案。
摘要由CSDN通过智能技术生成

注意:这个程序本人亲自测试运行过的,完美实现了图片缩放和旋转的效果,seekBar1是用来图片缩放的   seekBar2是图片旋转的,image是图片资源文件,可以自己设置


文件一:MainActivity.java

package com.example.zmap;



import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;


public class MainActivity extends Activity implements OnSeekBarChangeListener {
private int minWidth = 80;
private ImageView image;
private TextView text;
private TextView text2;
private Matrix matrix = new Matrix();


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
SeekBar seekBar1 = (SeekBar) this.findViewById(R.id.seekbar);
SeekBar seekBar2 = (SeekBar) this.findViewById(R.id.seekbar2);
text = (TextView) this.findViewById(R.id.text);
text2 = (TextView) this.findViewById(R.id.text2);
seekBar1.setOnSeekBarChangeListener(this);
seekBar2.setOnSeekBarChangeListener(this);


DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
seekBar1.setMax(dm.widthPixels - minWidth);
}


@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
if (seekBar.getId() == R.id.seekbar) {
int newWidth = progress + minWidth;
int newHeight = (int) (newWidth * 3 / 4);
image.setLayoutParams(new LinearLayout.LayoutParams(newWidth,
newHeight));
text.setText("图像高度: " + newWidth + "图像宽度" + newHeight);
} else if (seekBar.getId() == R.id.seekbar2) {
Bitmap bitmap = ((BitmapDrawable) (getResources()
.getDrawable(R.drawable.gougou))).getBitmap();
matrix.setRotate(progress);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(),
bitmap.getHeight(), matrix, true);
image.setImageBitmap(bitmap);
text2.setText(progress + "度");
}
}


@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub


}


@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub


}

}


文件二: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <ImageView
        android:id="@+id/image"
        android:layout_width="200dp"
        android:layout_height="150dp"
        android:scaleType="fitCenter"
        android:src="@drawable/gougou" />


    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="图像宽度:240 图像高度:160" />


    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:max="240"
        android:progress="120" />


    <TextView
        android:id="@+id/text2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="0度" />


    <SeekBar
        android:id="@+id/seekbar2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:max="360"
        android:progress="120" />


</LinearLayout>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值