利用ImageView和SeekBar动态缩放和旋转图片的Demo

原创 2016年08月30日 22:05:58
布局代码:<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"
    tools:context="${relativePackage}.${activityClass}" >


    <ImageView
        android:id="@+id/image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="fitCenter"
        android:src="@drawable/android_l" />


    <TextView
        android:id="@+id/textview1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp" />


    <SeekBar
        android:id="@+id/seekbar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


    <TextView
        android:id="@+id/textview2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:text="旋转度数:0" />


    <SeekBar
        android:id="@+id/seekbar2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:max="360"/>


</LinearLayout>


结合屏幕与SeekBar获取缩放:DisplayMetrics mDisplayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics);
mSeekBar1.setMax(mDisplayMetrics.widthPixels - MIN_WIDTH);
改变seekbar的图片响应代码:if (seekBar.getId() == R.id.seekbar1)
{
int newwidth = progress + MIN_WIDTH;
int newheight = (int) (progress * 3 / 4);
mImageView.setLayoutParams(new LinearLayout.LayoutParams(newwidth, newheight));
mTextView1.setText(getResources().getString(R.string.image_width) + progress + " ");
} else if (seekBar.getId() == R.id.seekbar2)
{
Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.android_l)).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(progress);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
mImageView.setImageBitmap(bitmap);
mTextView2.setText(getResources().getString(R.string.rotate) + progress);
}

总代码:package com.example.imageview;


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 ImageView mImageView;
private TextView mTextView1, mTextView2;
private SeekBar mSeekBar1, mSeekBar2;
private final static int MIN_WIDTH = 200;


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


public void setControl()
{
mImageView = (ImageView) findViewById(R.id.image_view);
mSeekBar1 = (SeekBar) findViewById(R.id.seekbar1);
mSeekBar2 = (SeekBar) findViewById(R.id.seekbar2);
mTextView1 = (TextView) findViewById(R.id.textview1);
mTextView2 = (TextView) findViewById(R.id.textview2);
}


public void SetonChangSeekBar()
{
mSeekBar1.setOnSeekBarChangeListener(this);
mSeekBar2.setOnSeekBarChangeListener(this);
}


private void setScreenMaxSeekBAr1()
{
DisplayMetrics mDisplayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(mDisplayMetrics);
mSeekBar1.setMax(mDisplayMetrics.widthPixels - MIN_WIDTH);
}


@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
if (seekBar.getId() == R.id.seekbar1)
{
int newwidth = progress + MIN_WIDTH;
int newheight = (int) (progress * 3 / 4);
mImageView.setLayoutParams(new LinearLayout.LayoutParams(newwidth, newheight));
mTextView1.setText(getResources().getString(R.string.image_width) + progress + " ");
} else if (seekBar.getId() == R.id.seekbar2)
{
Bitmap bitmap = ((BitmapDrawable) getResources().getDrawable(R.drawable.android_l)).getBitmap();
Matrix matrix = new Matrix();
matrix.setRotate(progress);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
mImageView.setImageBitmap(bitmap);
mTextView2.setText(getResources().getString(R.string.rotate) + progress);
}


}


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


}


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


}


}只是自己的小程序。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android 打造变化多端的SeekBar(垂直和水平)

SeekBar相信用的人不是很多,一般都是用水平SeekBar就可以了。但是之前项目中考虑使用垂直的SeekBar,就要继承重写SeekBar才能用。而垂直SeekBar在百度搜了一下,关于这方面文章...

安卓开发之自定义SeekBar竖立类(顺时针逆时针旋转90度)

类名:VerticalSeekBar public class VerticalSeekBar extends SeekBar { private boolean mIsDragging; ...

安卓控件使用系列16:ImageView实现图片缩放和旋转

在安卓中使用ImageView控件对图片进行旋转和缩放操作是经常遇到的开发背景,下面我们来分享一下它的实现方法。 这个例子实现的是通过滑动滑杆来控制图片的缩放和旋转,并显示缩放的大小和旋转的角度。 ...

ImageView实现图片旋转和缩放

原文地址:http://blog.csdn.net/wulianghuan/article/details/8585990 这一篇,给大家介绍一下ImageView控件的使用,Ima...

Android之UI学习篇六:ImageView实现图片旋转和缩放

这一篇,给大家介绍一下ImageView控件的使用,ImageView主要是用来显示图片,可以对图片进行放大、缩小、旋转的功能。 android:sacleType属性指定ImageVIew控件显示...

ImageView实现对图片的缩放和旋转

ImageView实现对图片的缩放和旋转 一种简单的方法是改变控件ImageView控件的大小,我们只要将ImageView标签中的 android:scaleType的属性值设置为fitCente...

Android 图片的平移、缩放、旋转demo

代码里都有注释:

iOS图片旋转缩放demo

  • 2015-04-01 15:26
  • 409KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)