獲取view的寬高工具類,很方便!
阿新 • • 發佈:2018-12-12
好久沒有寫筆記,今天來記錄一下。開發中經常遇到需要獲取某個view的寬高,或者需要動態設定某個view的寬高為原來的一半,三分之一等等。獲取view的寬高,有多種方法,網上都可以搜尋到。感覺每次獲取寬高都要重新寫一遍,有點麻煩,所以封裝一下,用到時候呼叫就好。話不多說,上程式碼。
import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; /** * * 描述: 佈局引數設定工具類 * created: 2018/6/14/014 17:57 more * **/ public class LayoutParamerUtils { /** * * 描述: 設定 view 高度 為父佈局高度的 百分比 * created: 2018/6/14/014 17:54 * **/ public static void setLayoutParamers2View(View view, int heightParent, double rateDouble) { if(view == null){ return; } ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.height = (int)(heightParent * rateDouble); view.setLayoutParams(layoutParams); } /** * * 描述: 設定 view 寬度,高度 高度 * created: 2018/6/14/014 17:54 * **/ public static void setLayoutParamers2ViewHW(View view, int height) { if(view == null){ return; } ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = height; layoutParams.height = height; view.setLayoutParams(layoutParams); } /** * * 描述: 獲取 指定view 的 viewTreeObserver * created: 2018/6/14/014 18:49 * **/ public static void getViewObserver(final View viewtest, final ViewObserverListener viewObserverListener) { if(viewtest == null){ return; } viewtest.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener(){ @Override public void onGlobalLayout() { viewtest.getViewTreeObserver().removeOnGlobalLayoutListener(this); if(viewObserverListener != null){ viewObserverListener.onViewObserverResult(); } } }); } /** * * 描述: getViewObserver 回撥介面 * created: 2018/6/14/014 18:54 * **/ public interface ViewObserverListener{ void onViewObserverResult(); } }
使用:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); LayoutParamerUtils.getViewObserver(findViewById(R.id.xxx), new LayoutParamerUtils.ViewObserverListener() { @Override public void onViewObserverResult() { LogUtils.logMe("寬:" + binding.drawerLayout.getWidth() + ",高:" + binding.drawerLayout.getHeight() + ", 密度:" + DisplayUtil.getDensity(MainActivity.this)); } }); }
如此甚好!