<ImageView
android:id="@+id/know_star"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="matrix"
android:src="@drawable/earth_know"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
private Matrix mMatrix = new Matrix();
private float mScaleFactor = .4f;
private float mRotationDegrees = 0.f;
private float mFocusX = 0.f;
private float mFocusY = 0.f;
private int mImageHeight, mImageWidth;
private ParticleSystem ps;
private ScaleGestureDetector mScaleDetector; //定义图片的放大缩小
private RotateGestureDetector mRotateDetector; //设置图片旋转
private ImageView knowHelp;
@SuppressLint("UseCompatLoadingForDrawables")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_knowledge);
initView();
// 获取屏幕的中心点
Display display = getWindowManager().getDefaultDisplay();
mFocusX = display.getWidth() / 2f; //屏幕的宽度一半
mFocusY = display.getHeight() / 3f; //屏幕的高度一半
// 确定维度的地球图像
Drawable d = this.getResources().getDrawable(stars[star - 1]);
mImageHeight = d.getIntrinsicHeight();
mImageWidth = d.getIntrinsicWidth();
// 视图缩放和转动的矩阵
float scaledImageCenterX = (mImageWidth * mScaleFactor) / 2;
float scaledImageCenterY = (mImageHeight * mScaleFactor) / 2;
mMatrix.postScale(mScaleFactor, mScaleFactor);
/**
* 用Matrix类中的平移方法设置地球的位置
* */
mMatrix.postTranslate(mFocusX - scaledImageCenterX, mFocusY - scaledImageCenterY);
knowStar.setImageMatrix(mMatrix); //将地球设置到屏幕中心
// 设置手势检测器
mScaleDetector = new ScaleGestureDetector(getApplicationContext(), new ScaleListener()); //图片缩放
mRotateDetector = new RotateGestureDetector(getApplicationContext(), new RotateListener()); //图片的旋转
}
@SuppressLint("ClickableViewAccessibility")
private void initView() {
knowBack = (ImageView) findViewById(R.id.know_back);
knowStar = (ImageView) findViewById(R.id.know_star);
knowKnow = (ImageView) findViewById(R.id.know_know);
// 将图片设置触碰监听
knowStar.setOnTouchListener(this);
knowHelp = (ImageView) findViewById(R.id.know_help);
}
@Override
protected void onPause() {
super.onPause();
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
}
/**
* 设置手势
*/
@SuppressLint("ClickableViewAccessibility")
public boolean onTouch(View v, MotionEvent event) {
knowHelp.setVisibility(View.GONE);
mScaleDetector.onTouchEvent(event); //设置图片缩放的监听
mRotateDetector.onTouchEvent(event); //设置图片的旋转监听
float scaledImageCenterX = (mImageWidth * mScaleFactor) / 2;
float scaledImageCenterY = (mImageHeight * mScaleFactor) / 2;
mMatrix.reset();
mMatrix.postScale(mScaleFactor, mScaleFactor);
mMatrix.postRotate(mRotationDegrees, scaledImageCenterX, scaledImageCenterY);
mMatrix.postTranslate(mFocusX - scaledImageCenterX, mFocusY - scaledImageCenterY);
ImageView view = (ImageView) v;
view.setImageMatrix(mMatrix);
return true; // 指示事件处理
}
/**
* 图片的放大缩小的监听
*/
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
//不要让物体太小或太大。
mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 10.0f));
return true;
}
}
/**
* 图片转动的监听
*/
private class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener {
@Override
public boolean onRotate(RotateGestureDetector detector) {
mRotationDegrees -= detector.getRotationDegreesDelta();
return true;
}
}
}
xslt支持的测试模式语句,用于条件判断,主要有:xsl:if和xsl:choose及其下的xsl:...
实现一个简单的计算器程序,要求:使用jsp+javabean模式实现。 项目源代码如下:...
通常所说的META标签,是在HTML网页源代码中一个重要的html标签。META标签用来描...
本文总结一下一些基础页面元素的实现方式,后续陆续更新。首先我们遇到最多的可...
在之前我们手写 mysql 的连接操作时,一般都会使用 mysql_close() 来进行关闭数...
为了防止步骤上的失误,造成不成功,我尽量每一步的过程都写清楚 一、生成DLL 1....
前言 近期做新项目,在设计表结构的时候,突然想起来之前面试的时候遇到的一个问...
由于不打算推出Windows 11,微软的做法是对Windows10进行不断的迭代,为给用户带...
【51CTO.com快译】您知道关系型数据库(RDBMS)与NoSQL数据库的本质区别和适用场景...
本文我们详细介绍了ASP数据库被挂木马的详细解决方案之编程处理的方法,解决方案...