原创 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