gpt4 book ai didi

android - 在 Android 中使用 GridView 缓慢缩放和滚动

转载 作者:行者123 更新时间:2023-11-29 22:22:28 26 4
gpt4 key购买 nike

我正在创建一个派生自 GridView 的自定义 View 。这包含一个具有缩放和平移功能的自定义 ImageView。滚动和缩放功能迟缓。如果父 View 是相同的自定义 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);
}

如果您将 sluggish 变量设置为 true,您会发现 ImageView 的效果更好。您是否知道为什么使用 GridView 会导致缩放和滚动不可用或如何解决?

我没有将“动态”ImageView 用于“静态”ImageView,因为我还没有找到如何将一个 ImageView 嵌入另一个 ImageView。

提前致谢。

最佳答案

到目前为止,我发现的最简单的解决方案是使用自定义 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 获得的替代解决方案建议.它包括子类化 View、缓存它和 using the OnDraw event用于在固定背景上合成滚动图像作为他的演示 here .

关于android - 在 Android 中使用 GridView 缓慢缩放和滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6792331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com