1 | brew install homebrew/php/phpXX-xdebug |
在 /usr/local/etc/php/{x.y}/conf.d/ext-xdebug.ini) 內加上
1 | xdebug.remote_enable=1 |
方法1: 先關掉該app 設定→防火牆→進階→允許名單找到該app移掉 再打開app 同意 方法2: 開啟終端機輸入 (可以先輸入codesign -v 後把app檔拉到終端機畫面會自動產生路徑)
如果會有/Applications/xxx.app: a sealed resource is missing or invalid 就是得把app檔刪掉重新安裝
codesign -v /Applications/xxx.app
用名稱呼
function run1($callback) { $callback('123'); } function funA($val) { echo 'funA:'.$val; } run1('by run1');//funA:by run1用物件傳(推薦)
class ClassB { public function funB($val){ echo 'ClassB:funB:'.$val; } } function run2(ClassB $callable){ $callable->funB('by run2'); } run2(new ClassB());//ClassB:funB:by run2
直接設 setClickListener 沒反應
要加上
private OnClickListener listener; @Override public boolean dispatchTouchEvent(MotionEvent event) { if(event.getAction() == MotionEvent.ACTION_UP) { if(listener != null) listener.onClick(this); } return super.dispatchTouchEvent(event); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if(event.getAction() == KeyEvent.ACTION_UP && (event.getKeyCode() == KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { if(listener != null) listener.onClick(this); } return super.dispatchKeyEvent(event); } @Override public void setOnClickListener(OnClickListener listener) { this.listener = listener; }
解決 Error:Execution failed for task ‘preDexDebug’. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command finished with non-zero exit value 1
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/laySwipe" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView ... /> </android.support.v4.widget.SwipeRefreshLayout>
OnRefreshListener onSwipeToRefresh = new OnRefreshListener() { @Override public void onRefresh() { laySwipe.setRefreshing(true); //dosomething laySwipe.setRefreshing(false); } }; ((SwipeRefreshLayout)findViewById(R.id.laySwipe)).setOnRefreshListener(onSwipeToRefresh);
幫listview補上下面的code避免滑動衝突
private OnScrollListener onListScroll = new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem == 0) { laySwipe.setEnabled(true); }else{ laySwipe.setEnabled(false); } } };
因為 UI 操作不能在其它 thread 做
直接用 activity 提供的 runOnUiThread 做掉
1 | runOnUiThread(new Runnable(){ public void run(){ |
4.6 新進的 EventSystem 事件系統 可以用在 UI 事件外也可以用在普通的 GameObject
終於不用自已打射線偵測點擊了
環境 4.6.0b17 因為才beta版所以變動的機率很大
對 UI 偵聽事件:
這邊先用 Image 試
加入 UI - Image
加入 Image 之後應該會自動建立一個 EventSystem ( 如果沒有自已加 )
Image 之上的 Canvas 會自動掛 GraphicRaycaster
Image 掛上 UI - Event Trigger
寫個public void onClick(){ Debug.Log (name + " is Clicked!"); }
掛在 Image 身上
對 Event Trigger 按 Add New - PointerClick - 按右下的 +
把自身從 Hierarchy 拖進 None(Object) 右邊指定剛寫的 Function
try it !
對場景上的 GameObject 偵聽事件:場景上加入 UI - EventSystem
Main Camera 掛上 Physics Raycaster (或 Physics 2D Raycaster )
被點的 GameObject 掛上 Box Collider (或 Box Collider 2D)
被點的 GameObject 掛上 Event Trigger
寫個public void onClick(){ Debug.Log (name + " is Clicked!"); }
掛在 被點的 GameObject 身上
對 Event Trigger 按 Add New - PointerClick - 按右下的 +
把自身從 Hierarchy 拖進 None(Object) 右邊指定剛寫的 Function
try it !
4.6 新進的 EventSystem 事件系統 可以用在 UI 事件外也可以用在普通的 GameObject
終於不用自已打射線偵測點擊了
環境 4.6.0b17 因為才beta版所以變動的機率很大
對 UI 偵聽事件:
這邊先用 Image 試
加入 UI - Image
加入 Image 之後應該會自動建立一個 EventSystem ( 如果沒有自已加 )
Image 之上的 Canvas 會自動掛 GraphicRaycaster
Image 掛上 UI - Event Trigger
寫個public void onClick(){ Debug.Log (name + " is Clicked!"); }
掛在 Image 身上
對 Event Trigger 按 Add New - PointerClick - 按右下的 +
把自身從 Hierarchy 拖進 None(Object) 右邊指定剛寫的 Function
try it !
對場景上的 GameObject 偵聽事件:場景上加入 UI - EventSystem
Main Camera 掛上 Physics Raycaster (或 Physics 2D Raycaster )
被點的 GameObject 掛上 Box Collider (或 Box Collider 2D)
被點的 GameObject 掛上 Event Trigger
寫個public void onClick(){ Debug.Log (name + " is Clicked!"); }
掛在 被點的 GameObject 身上
對 Event Trigger 按 Add New - PointerClick - 按右下的 +
把自身從 Hierarchy 拖進 None(Object) 右邊指定剛寫的 Function
try it !