您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android matrix