自定义您想要获取大小的视图:
public class SizeFetchableView extends YourView{
//constructors...
private SizeFetchListener mSizeFetchListener;
public void setSizeFetchListener(SizeFetchListener l){
mSizeFetchListener = l;
}
public void onLayout(boolean isChanged,int l,int t,int r,int b){
super.onLayout(l,t,r,b);
if(mSizeFetchListener!=null){
mSizeFetchListener.onFetchSize(this,isChanged,getWith(),getHeight());
}
}
public interface SizeFetchListener{
public void onFetchSize(View view,boolean isChanged,int w,int h);
}
}
所以,您可以在第一时间使用 SizeFetchListener 获取视图大小,但是您的线程逻辑依赖于大小,必须等待获取大小接口调用。
public class Task extends Thread implements SizeFetchListener{
SizeFetchableView mSizeFetchableView;
public Task(SizeFetchableView v){
mSizeFetchableView=v;
mSizeFetchableView.setSizeFetchListner(this);
}
public void onFetchSize(View view,boolean isChanged,int w,int h){
//and this time ,you can start you thread if not,or continue you logic who waiting the size
}
}
//请原谅我的英语不好。谢谢