问题:
对于图片和Web视图,放大缩小都很容易。但我想要放大整个活动(Activity)。我该如何实现呢?
这里提供线框图:
从这张图中,您可以了解到我所需的内容。
请求:
如果您有任何解决方案,请分享。
谢谢。
问题:
对于图片和Web视图,放大缩小都很容易。但我想要放大整个活动(Activity)。我该如何实现呢?
这里提供线框图:
从这张图中,您可以了解到我所需的内容。
请求:
如果您有任何解决方案,请分享。
谢谢。
你可以通过缩放根活动视图来模拟缩放。以下是一些起始代码:
View v = findViewById(android.R.id.content); // get reference to root activity view
v.setOnClickListener(new OnClickListener() {
float zoomFactor = 1.5f;
boolean zoomedOut = false;
@Override
public void onClick(View v) {
if(zoomedOut) {
// now zoom in
v.setScaleX(1);
v.setScaleY(1);
zoomedOut = false;
}
else {
v.setScaleX(zoomFactor);
v.setScaleY(zoomFactor);
zoomedOut = true;
}
}
});
请注意,该活动将在单击时缩放,而不是双击缩放。此外,您可能希望为缩放添加动画效果。查看Property Animation了解如何实现此目的。
[编辑] 对于旧的API级别,您可以使用ScaleAnimation。您还可以设置动画的持续时间。但是,一个主要的警告是它只修改视图的外观,但实际视图并没有改变。
if(zoomedOut) { // zoom in
ScaleAnimation anim = new ScaleAnimation(1f, 1.5f, 1f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
anim.setDuration(500);
anim.setFillAfter(true);
v.startAnimation(anim);
zoomedOut = false;
}
else {
ScaleAnimation anim = new ScaleAnimation(1.5f, 1f, 1.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
anim.setDuration(500);
anim.setFillAfter(true);
v.startAnimation(anim);
zoomedOut = true;
setScaleX
和 setScaleY
来缩放 完整的活动视图。setPivotX
和 setPivotY
设置枢轴点。