我正在创建一个从GridView派生的自定义视图。这包含具有缩放和平移功能的自定义ImageView。滚动和缩放功能很慢。如果父视图是相同的自定义ImageView而不是GridView,它可以完美地工作。我正在尝试这样做,因为我需要一个静态背景图像,中心有一个交互区域。缩放和滚动的实现类似于this article。我上传了一个复制问题here的测试项目。 OnCreate方法实现如下:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View myView1;
boolean sluggish = false;
if (sluggish) {
myView1 = new MyGridView(this);
}
else {
myView1 = new MyImageView(this);
}
setContentView(myView1);
}
如果将缓慢变量设置为true,您会看到ImageView的效果要好得多。您是否知道为什么使用GridView会使缩放和滚动无法使用或者如何解决?
我没有将“动态”ImageView用于“静态”ImageView,因为我还没有找到如何将ImageView嵌入到另一个ImageView中。
提前致谢。
答案 0 :(得分:2)
到目前为止,我发现的最简单,最简单的解决方案是使用自定义FrameLayout:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View myView1 = new MyFrameLayout(this);
setContentView(myView1);
}
实现如下所示,并在我发布的第一个示例中使用MyImageView自定义控件。
public class MyFrameLayout extends FrameLayout {
public MyFrameLayout(Context context) {
super(context);
MyImageView i1 = new MyImageView(context);
this.addView(i1);
MyImageView i2 = new MyImageView(context);
LayoutParams lp = new LayoutParams(300, 300);
lp.leftMargin = 100;
lp.topMargin = 100;
lp.gravity = 0;
this.addView(i2, lp);
}
}
我从Lawrence D'Olivero通过Twitter获得的替代解决方案建议。它包括继承View,缓存它和using the OnDraw event,用于在固定背景上组合滚动图像作为他的演示here。