原创 Socket跨進程長連接

public class SocketService extends Service { private static final String TAG = "SocketService"; private static

原创 Android 組件化

打jar包 jar只包含class字節碼,資源文件(如drawable、lauyout)不包含 android{ task makeJar(type: Copy){ delete('build/outputs/lib/te

原创 垂直TextView

1. View繪製   import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; impo

原创 PullToRefreshListView的使用

1 佈局定義 <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/lv_per_seek_result" andro

原创 service啓動方式

兩種啓動方式: 1. start方式 onCreate()-->onStartCommand(Intent intent, int flags, int startId)-->onDestroy() a.某個servie 在整個

原创 EventBus (二)線程切換

線程選擇/** * * @param subscription * @param event * @param isMainThread 發送通知時,所在線程 */ private void postToSubscri

原创 SharedPreferences 使用

1.context.getPreferences (int mode)獲取的是此Activity私有的Preference,以此Activity的名字命名,因此一個Activity只有一個,屬於這個Activity。保存在data/dat

原创 PullToRefreshListView的使用

1 佈局定義 <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/lv_per_seek_result" andro

原创 PopupWindow的使用

1. 佈局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent

原创 根據字符長度,控制在TextView顯示多少行

/**  *  控制顯示內容  行數  * @param tvDetail  */ private void setShowLines(final TextView tvDetail) {     Vie

原创 EventBus 源碼解析

1.註冊EventBus.getDefault().register(this);首先,獲得一個單例對象,雙重判空public static EventBus getDefault() { if (defaultInstance

原创 圓環-顏色漸變

private int [] colors=new int [2]; // 漸變色數組 SweepGradient  sweepGradient = new SweepGradient(centreX, centreY,colors, n

原创 view的事件分發使用

1.setOnTouchListener true 在OnTouchListener 的onTouch 處截斷,不往下走,onTouchEvent 設置不起作用 a.onTouchEvent false E/

原创 Aidl的使用

1. 包名要一致1.1 Aidla.服務端與客戶端的Aidl包名要一致,不然將報錯(2與4)java.lang.SecurityException: Binder invocation to an incorrect interfaceb

原创 PageTransformer實現ViewPager 頁面切換

package com.example.test; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.View