編輯:關於Android編程
/** * 根據坐標獲取相對應的子控件
* 在Activity使用 * * @param x坐標 * @param y坐標 * @return 目標View */ public View getViewAtActivity(int x, int y) { // 從Activity裡獲取容器 View root = getWindow().getDecorView(); return findViewByXY(root, x, y); } /** * 根據坐標獲取相對應的子控件
* 在重寫ViewGroup使用 * * @param x坐標 * @param y坐標 * @return 目標View */ public View getViewAtViewGroup(int x, int y) { return findViewByXY(this, x, y); } private View findViewByXY(View view, int x, int y) { View targetView = null; if (view instanceof ViewGroup) { // 父容器,遍歷子控件 ViewGroup v = (ViewGroup) view; for (int i = 0; i < v.getChildCount(); i++) { targetView = findViewByXY(v.getChildAt(i), x, y); if (targetView != null) { break; } } } else { targetView = getTouchTarget(view, x, y); } return targetView; } private View getTouchTarget(View view, int x, int y) { View targetView = null; // 判斷view是否可以聚焦 ArrayListTouchableViews = view.getTouchables(); for (View child : TouchableViews) { if (isTouchPointInView(child, x, y)) { targetView = child; break; } } return targetView; } private boolean isTouchPointInView(View view, int x, int y) { int[] location = new int[2]; view.getLocationOnScreen(location); int left = location[0]; int top = location[1]; int right = left + view.getMeasuredWidth(); int bottom = top + view.getMeasuredHeight(); if (view.isClickable() && y >= top && y <= bottom && x >= left && x <= right) { return true; } return false; }
一、 進程概念介紹四大組件都是運行在主線程Service是在一段不定的時間運行在後台,不和用戶交互應用組件。每個Service必須在manifest中 通過來聲明。可以通
最近心情比較浮躁,項目初步已經完成一直沒有心情來更新博客,基本功能已經實現了包括添加城市,刪除城市,獲取城市部分天氣預報信息,已經詳細的天氣預報信息,還集成了ShareS
在Android開發中,Animation是用來給控件制作效果的。大多數的控件都可以用這個類,這個類包含了4種基本動作,分別為移動,旋轉,淡入淡出,縮放。在使用Anima
PullToRefresh是一套實現非常好的下拉刷新庫,它支持:1.ListView2.ExpandableListView3.GridView4.WebView等多種常