Я написал следующий код, чтобы сначала увеличить размер ImageView и после 100 мс уменьшить размер одного и того же ImageView. Однако этот код увеличивает размер ImageView, но он не уменьшает его размер, или код после 100 мс задержки не влияет на размеры imageView.setLayoutParams не работает второй раз
Что я делаю неправильно?
uiHandler.post(new Runnable()
{
@Override
public void run()
{
FrameLayout.LayoutParams layout = (android.widget.FrameLayout.LayoutParams) imageView.getLayoutParams();
layout.height = (int) (2*iconsSizeInDP);
layout.width = (int) (2*iconsSizeInDP);
imageView.setLayoutParams(layout);
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Hello", Toast.LENGTH_SHORT).show();
// following code block doesnt'affect imageView dimensions
layout.height = (int) iconsSizeInDP;
layout.width = (int) iconsSizeInDP;
imageView.setLayoutParams(layout);
}
});
С уважением
Попробуйте создать 'LayoutParams' снова на месте, где вы сказали, код не работает' FrameLayout.LayoutParams раскладка = (android.widget.FrameLayout.LayoutParams) ImageView. getLayoutParams(); '. Также увеличивайте время в 'Thread.sleep()'. Это может быть слишком сложно увидеть разницу. –
Когда вы продолжаете блокировать поток пользовательского интерфейса со сном, в каком потоке вы думаете, что происходит повторная компоновка? – laalto
Вы уверены, что второй Set не называется? используйте 'AsyncTask' вместо' uiHandler' и повторите попытку. первая часть в 'onPreExecute()' sleep in 'onBackground' и установите второй параметр в' onPostExeute() ' –