利用ImageView和SeekBar动态缩放和旋转图片的Demo
来源:互联网 发布:php cgi 性能 编辑:程序博客网 时间:2024/05/29 16:46
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
}
}只是自己的小程序。
- 利用ImageView和SeekBar动态缩放和旋转图片的Demo
- ImageView实现图片旋转和缩放
- imageView实现图片缩放和旋转
- Android----imageView实现图片的旋转和缩放
- ImageView实现对图片的缩放和旋转
- 图片的旋转和缩放
- android学习记录(二)-----imageView实现图片的旋转和缩放
- 通过SeekBar对ImageView进行缩放,旋转
- ImageView图像控件之缩放和旋转
- 图片的旋转,缩放和拖拽
- [IOS]图片的旋转和缩放
- android图片的缩放和旋转功能
- Android中利用Matrix实现图片平移、缩放和旋转
- 用SeekBar更改图片的大小,缩放及其旋转
- Android 图片的平移、缩放、旋转demo
- 测试缩放和旋转图片
- Android之UI学习篇六:ImageView实现图片旋转和缩放
- 【Android 开发】:UI控件之 ImageView 实现图片旋转和缩放功能
- Servlet基础相关
- AsyncTask异步任务
- codeforces711B Chris and Magic Square 简单枚举
- AsyncTask 异步任务 + json 解析 网络数据
- 通过IP查询计算机名(转)
- 利用ImageView和SeekBar动态缩放和旋转图片的Demo
- 析构函数调用顺序
- 主题: kindeditor加入ckplayer视频播放器的插件使用讲解
- Ubuntu15.1编译Android5.1详解
- iOS/OS X 内存管理(二):借助工具解决内存问题
- Torch7学习笔记[2] ---神经网络的主体框架
- 对Android 回调机制的一些理解
- OpenCV 阈值化
- 关于实现抽取公共DAO