Android中Matrix动画
2016-06-17 09:33
411 查看
MainActivity.java
public class MainActivity extends Activity {
@InjectView(R.id.et_rotate)
EditText etRotate;
@InjectView(R.id.et_scale)
EditText etScale;
@InjectView(R.id.et_transX)
EditText etTransX;
@InjectView(R.id.et_transY)
EditText etTransY;
@InjectView(R.id.linearLayout)
LinearLayout linearLayout;
@InjectView(R.id.btn_rotate)
Button btnRotate;
@InjectView(R.id.btn_scale)
Button btnScale;
@InjectView(R.id.btn_trans)
Button btnTrans;
@InjectView(R.id.btn_back)
Button btnBack;
@InjectView(R.id.image)
ImageView image;
private Matrix matrix;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
@OnClick({R.id.btn_rotate, R.id.btn_scale, R.id.btn_trans, R.id.btn_back})
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_rotate:
if(matrix==null){
matrix = new Matrix();
}
float rotate= Float.parseFloat(etRotate.getText().toString());
matrix.postRotate(rotate);
image.setImageMatrix(matrix);
break;
case R.id.btn_scale:
if(matrix==null){
matrix = new Matrix();
}
float scale= Float.parseFloat(etScale.getText().toString());
matrix.postScale(scale,scale);
image.setImageMatrix(matrix);
break;
case R.id.btn_trans:
if(matrix==null){
matrix = new Matrix();
}
float transX= Float.parseFloat(etTransX.getText().toString());
float transY= Float.parseFloat(etTransY.getText().toString());
matrix.postTranslate(transX,transY);
image.setImageMatrix(matrix);
break;
case R.id.btn_back:
if(matrix==null){
matrix = new Matrix();
}
matrix.reset();
image.setImageMatrix(matrix);
break;
}
}
}
xml
<?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"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/linearLayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_rotate"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_scale"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_transX"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_transY"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旋转"
android:layout_weight="1"
android:id="@+id/btn_rotate" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="缩放"
android:layout_weight="1"
android:id="@+id/btn_scale" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="平移"
android:layout_weight="1"
android:id="@+id/btn_trans" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="还原"
android:layout_weight="1"
android:id="@+id/btn_back" />
</LinearLayout>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/image"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@mipmap/ic_launcher"
android:scaleType="matrix"/>
</RelativeLayout>
注意:imageView一定设置 scaleType = “matrix”
matrix 作用与 imageView的src
public class MainActivity extends Activity {
@InjectView(R.id.et_rotate)
EditText etRotate;
@InjectView(R.id.et_scale)
EditText etScale;
@InjectView(R.id.et_transX)
EditText etTransX;
@InjectView(R.id.et_transY)
EditText etTransY;
@InjectView(R.id.linearLayout)
LinearLayout linearLayout;
@InjectView(R.id.btn_rotate)
Button btnRotate;
@InjectView(R.id.btn_scale)
Button btnScale;
@InjectView(R.id.btn_trans)
Button btnTrans;
@InjectView(R.id.btn_back)
Button btnBack;
@InjectView(R.id.image)
ImageView image;
private Matrix matrix;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
@OnClick({R.id.btn_rotate, R.id.btn_scale, R.id.btn_trans, R.id.btn_back})
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_rotate:
if(matrix==null){
matrix = new Matrix();
}
float rotate= Float.parseFloat(etRotate.getText().toString());
matrix.postRotate(rotate);
image.setImageMatrix(matrix);
break;
case R.id.btn_scale:
if(matrix==null){
matrix = new Matrix();
}
float scale= Float.parseFloat(etScale.getText().toString());
matrix.postScale(scale,scale);
image.setImageMatrix(matrix);
break;
case R.id.btn_trans:
if(matrix==null){
matrix = new Matrix();
}
float transX= Float.parseFloat(etTransX.getText().toString());
float transY= Float.parseFloat(etTransY.getText().toString());
matrix.postTranslate(transX,transY);
image.setImageMatrix(matrix);
break;
case R.id.btn_back:
if(matrix==null){
matrix = new Matrix();
}
matrix.reset();
image.setImageMatrix(matrix);
break;
}
}
}
xml
<?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"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:id="@+id/linearLayout">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_rotate"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_scale"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_transX"
android:layout_weight="1" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/et_transY"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/linearLayout"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旋转"
android:layout_weight="1"
android:id="@+id/btn_rotate" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="缩放"
android:layout_weight="1"
android:id="@+id/btn_scale" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="平移"
android:layout_weight="1"
android:id="@+id/btn_trans" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="还原"
android:layout_weight="1"
android:id="@+id/btn_back" />
</LinearLayout>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/image"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:src="@mipmap/ic_launcher"
android:scaleType="matrix"/>
</RelativeLayout>
注意:imageView一定设置 scaleType = “matrix”
matrix 作用与 imageView的src
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories