在galleryView onItemSelected中,我调用setText来更改textview的文本,该文本视图是主要布局的一部分:
@Override
public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, int position, long id) {
// --- run asyncTask to update gallery view here
TextView myTextView = (TextView) findViewById(R.id.myTextView);
myTextView.setText("position is: ": position);
}
如果我将所有内容保留原样并且刚删除myTextView.setText
图库按预期工作,但如果我保留它,那么滚动时图库会以一种丑陋的方式快速捕捉到所选位置。可能是什么问题?
答案 0 :(得分:0)
setText命令位于UI线程上,可能是它从当前的Gallery动画中获得了更高的优先级,这会破坏它的动作。
尝试在处理程序中设置setText
:
new Handler().post(new Runnable() {
@Override
public void run() {
myTextView.setText("position is: ": position);
}
});
答案 1 :(得分:0)
// try this
TextView myTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_full);
myTextView = (TextView) findViewById(R.id.myTextView);
}
@Override
public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, int position, long id) {
// --- run asyncTask to update gallery view here
myTextView.setText("position is :"+ position);
myTextView.invalidate();
}
答案 2 :(得分:0)
“Ugly”是描述用户界面转换的一个非常主观的术语。
但是,当您选择某个项目时,听起来好像是您想要的自定义动画。在布局发生之前调用onItemSelected()
,因此您可以根据需要为此方法设置图库或单个视图的动画。
我建议您阅读Android开发人员文档中的Animation and Graphics documentation,以更全面地了解动画并帮助确定您的实际需求。
代码会有所不同,具体取决于您决定使用的内容以及您要定位的Android版本。将淡化所选视图的简单视图动画可能如下所示:
public void onItemSelected(EcoGalleryAdapterView<?> parent, View view,
int position, long id) {
view.setAnimation(new AlphaAnimation(0, 1));
}