- 博客(16)
- 收藏
- 关注
原创 Socket跨进程长连接
public class SocketService extends Service { private static final String TAG = "SocketService"; private static final long HEART_BEAT_RATE = 60 * 1000; private static final long RECONNECT_...
2019-08-22 14:43:58
256
原创 Android 组件化
打jar包jar只包含class字节码,资源文件(如drawable、lauyout)不包含android{task makeJar(type: Copy){ delete('build/outputs/lib/testjar.jar') //移除旧的jar包 from('build/intermediates/bundles/debug')//获取打包所需的cl...
2019-01-10 10:40:16
132
原创 垂直TextView
1. View绘制 import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphic...
2018-10-09 10:48:21
345
原创 PageTransformer实现ViewPager 页面切换
package com.example.test;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.View;/** * Created by mengjianbo on 2018-08-07. */public class TransFormer impl...
2018-08-07 16:57:08
230
原创 TranslateAnimation解析
以view的左上角作为 起点创建1. ABSOLUTE 绝对路径模式 (左上角 + 要移动到的目标)public TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) { mFromXValue = fromXDelta; mToXValue = ...
2018-08-03 09:52:32
369
原创 Aidl的使用
1. 包名要一致1.1 Aidla.服务端与客户端的Aidl包名要一致,不然将报错(2与4)java.lang.SecurityException: Binder invocation to an incorrect interfaceb.aidl的包名与当前用户的包名无关,引用即可(1与2,或者3与4)如:com.example.IMyAidl.aidl,但当前包名为com.example.my...
2018-04-18 11:21:29
359
原创 SharedPreferences 使用
1.context.getPreferences (int mode)获取的是此Activity私有的Preference,以此Activity的名字命名,因此一个Activity只有一个,属于这个Activity。保存在data/data/包名/shared_prefs位置下public SharedPreferences getPreferences(int mode) { retur...
2018-04-16 17:40:19
247
原创 EventBus (二)线程切换
线程选择/** * * @param subscription * @param event * @param isMainThread 发送通知时,所在线程 */private void postToSubscription(Subscription subscription, Object event, boolean isMainThread) { //注解时,...
2018-04-10 11:08:42
1214
原创 EventBus 源码解析
1.注册EventBus.getDefault().register(this);首先,获得一个单例对象,双重判空public static EventBus getDefault() { if (defaultInstance == null) { synchronized (EventBus.class) { if (defaultInstanc...
2018-04-09 16:28:06
158
原创 service启动方式
两种启动方式:1. start方式 onCreate()-->onStartCommand(Intent intent, int flags, int startId)-->onDestroy()a.某个servie 在整个应用中只有一个 可以此activity启动,另一个stop b.只在第一次启动时调用onCreate,其他时候调用(一个或多个activi...
2017-12-14 16:47:07
248
原创 AlertDialog自定义布局
dialog = new AlertDialog.Builder(context).create();dialog.show();//配置显示大小,居中View inflate = LayoutInflater.from(context).inflate(R.layout.dialog_per_call, null);dialog.setContentView(inflate);Wind
2017-11-08 16:59:51
766
原创 PullToRefreshListView的使用
1 布局定义com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/lv_per_seek_result" android:layout_width="match_parent" android:dividerHeight="5dp" android:layout
2017-10-27 09:52:41
194
原创 PopupWindow的使用
1. 布局LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"
2017-10-27 09:39:10
218
原创 根据字符长度,控制在TextView显示多少行
/** * 控制显示内容 行数 * @param tvDetail */private void setShowLines(final TextView tvDetail) { ViewTreeObserver vto = tvDetail.getViewTreeObserver();//调用 绘画View之前的回调方法 因为measure 在 dra
2017-10-27 09:23:45
452
原创 view的事件分发使用
1.setOnTouchListener true 在OnTouchListener 的onTouch 处截断,不往下走,onTouchEvent 设置不起作用 a.onTouchEvent false E/MyButton: dispatchTouchEvent ACTION_DOWN E/TAG: onTouch execute, action
2017-10-27 09:11:39
202
原创 圆环-颜色渐变
private int [] colors=new int [2]; // 渐变色数组SweepGradient sweepGradient = new SweepGradient(centreX, centreY,colors, null); //角度颜色渐变// 设置渐变起始位置matrix.reset();每次都要重置,不然颜色渐变起始位置不起作用matrix.pre
2016-11-21 19:06:30
703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人