当前位置: 代码迷 >> Android >> 在OnClickListener()里面动态改变控件的高度有关问题
  详细解决方案

在OnClickListener()里面动态改变控件的高度有关问题

热度:58   发布时间:2016-04-28 07:05:05.0
在OnClickListener()里面动态改变控件的高度问题
如题,想实现,当点击一个控件的时候,后台每过100millis就减少控件的高度,最后再隐藏控件。
我写的代码

@Override
public void onClick(View v) {
String pos = (String)v.getTag();
TableRow tr = (TableRow)findViewById(R.id.row_one_hide);
GridView gv = (GridView) tr.getChildAt(0);
LayoutParams params = gv.getLayoutParams();
int height = 100;
while(height > 0){
params.height = height;
height -= 12;
try {
Thread.currentThread().sleep(100);
gv.setLayoutParams(params);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
params.height = params.WRAP_CONTENT;
gv.setLayoutParams(params);
tr.setVisibility(View.GONE);
}

为什么这段代码的效果是线程停一段时间(这段时间为Thread.sleep()语句执行的次数*100 millis),然后这个控件就瞬间消失,不是每隔一段时间消失一小段(12px),最终才消失。
求高手解决这个问题

------解决方案--------------------
引用:
今天想到一个实现的方法了
新启动一个线程,在这个线程里每隔100毫秒就往主线程的MessageQueue里面发送一条更新控件高度的Message.
在Handler里面,获取这个Message里面发送过来的控件的高度值,然后更新控件高度就行了。

求高手有其他思路吗?

我想说的都知道了,楼主,你知道的太多了!
ps:就你说的这么做,不要放在主线程,要不然就会出现你上面出现的问题