3

在 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画廊作品,但如果我保留它,那么当滚动画廊时,画廊会以一种丑陋的方式快速捕捉到所选位置。可能是什么问题?

4

3 回答 3

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();
    }
于 2013-09-30T11:11:26.073 回答
0

The setText commands sits on the UI Thread, maybe it's taking a higher priority or something from the current Gallery animation which disrupts it from acting as it should.

try setting your setText inside a handler:

new Handler().post(new Runnable() {

    @Override
    public void run() {
        myTextView.setText("position is: ": position);
    }

});
于 2013-09-26T21:20:53.443 回答
0

“丑陋”是描述用户界面转换的一个非常主观的术语。

但是,听起来好像您想要的是选择项目时的自定义动画。onItemSelected()在布局发生之前调用,因此您可以在此方法中为您的画廊或单个视图设置动画。

我建议阅读 Android 开发人员文档中的动画和图形文档,以更全面地了解动画并帮助确定您真正想要的内容。

代码会有所不同,具体取决于您决定希望它的外观以及您所针对的 Android 版本。将淡入所选视图的简单视图动画可能如下所示:

public void onItemSelected(EcoGalleryAdapterView<?> parent, View view, 
        int position, long id) {
    view.setAnimation(new AlphaAnimation(0, 1));
}
于 2013-10-01T20:50:16.850 回答