- 博客(66)
- 收藏
- 关注
原创 Dagger2入门
1.@Conponent@Component(modules = MainSurfaceViewModule.class)public interface MainSurfaceViewComponent { void inject(MainSurfaceView mainSurfaceView);}2.@Module@Modulepublic class M...
2018-06-08 11:30:48
175
原创 自定义混淆Jar包
1.新建library2.配置library的gradledef SDK_BASENAME = "mylibs"; def SDK_VERSION = "_v1.0"; def sdkDestinationPath = "build/outputs/jar/"; def zipFile = file('build/intermediates/bundles/release/..
2018-06-08 09:28:32
509
原创 OpenGL 之 着色语言
数据类型总的来说,数据类型分为标量,向量,矩阵,采样器,结构体以及数组等几类。 详细来说,分为内建的原生数据类型以及构建数据类型,如:浮点型(float),布尔型(bool),整型(int),矩阵型(matrix),向量型(vec2、vec3)等。1、标量:bool,int,float 2、向量: vec2:包含两个浮点数的向量 vec3:包含三个浮点数的向量 vec4:包含四个
2018-01-12 10:31:18
296
原创 OpenGL 之 纹理贴图
概念1、图元:其实就是SurfaceView 2、纹理映射:为图元每个顶点指定纹理坐标,通过纹理坐标在纹理图确定纹理区域,最后将纹理区域的内容映射到图元上 3、纹理采样:图元上的每个片元在片元着色器根据纹理坐标的易变变量,从纹理图中提取对应位置颜色的过程 4、纹理图片:宽高必须是 2的n次方 5、多重纹理:对同一个图元采用多幅纹理图核心函数1、glGenTexture
2018-01-09 10:59:07
2067
原创 OpenGL 2.0 之 裁剪与测试
剪裁测试基本原理:用于渲染时限制绘制区域,通过此技术可以再屏幕(帧缓冲)指定一个矩形区域。启用剪裁测试之后,不在此矩形区域内的片元被丢弃,只有在此矩形区域内的片元才有可能进入帧缓冲。因此实际达到的效果就是在屏幕上开辟了一个小窗口,可以再其中进行指定内容的绘制。核心代码如下:GLES20.glEnable(GLES20.GL_SCISSOR_TEST);//启用剪裁测试GLES20.g
2018-01-08 16:57:59
2239
原创 OpenGLES
构造方法中初始化顶点和纹理public voiid initVertexData(){ float vertices[] = {顶点数 * 3};//顶点坐标 float buffer1 = CreateBuffer(buffer1,vertices); float texCoor[] = {对应顶点坐标 * 3};//纹理坐标 float buffer2 = Cre
2017-12-19 17:52:59
275
原创 逻辑分析(1)
项目整体框架是用RadioGroup显示四个不同的Fragment,HomeFragment,GoodsFragment,ShoppingCarFragment,MeFragment HomeFragment整体框架是套着PullToRefresh的垂直的线性布局,依次是TitleBarFragment,ViewPager,LinearLayout,LinearLayout,GridView。
2017-12-01 21:39:58
198
原创 常见面试题
单线程模型汇中Messgae、Handler、MessageQueu,Lopper之间关系 a) Looper。Prepare,初始化lopper,放入ThreadLocal中 b) Looper。Loop不断遍历MessagrQueue c) Handler创建依赖Looper,Handler。sendMessage到Queue,looper不断从queue去消息,然后回调handle
2017-11-16 00:20:03
197
原创 adb常用指令
maxvideo –fps mount -o remount /system将缓存区的数据同步到系统硬盘 sync提取文件 adb pull /sdcard/1_tianshuang/front_back_lut_image.tsh ./删除文件 adb shell rm /sdcard/1_tianshuang/front_back_lut_image.tsh查看正在运行的模拟器 adb
2017-11-10 10:10:15
197
原创 Android应用权限
开发Android应用时要在AndroidManifest.xml添加一些权限,但不是所有的权限都能被用户应用(UserApplication)使用,有些只能被系统应用(SystemApplication)使用。如果用户应用使用了权限,那么就会出现类似这样的错误信息: Not granting permission android.permission.INTERNAL_SYSTEM_WINDOW
2017-11-10 09:13:32
464
原创 Android系统设置选项的包名
以com.android.settings开头的形式:com.android.settings.Settings 手机系统设置 com.android.settings.WirelessSettings 无线和网络设置 com.android.settings.AccessibilitySettings 辅助功能设置 com.android.settings.ActivityPicker
2017-11-09 18:20:05
4873
1
原创 Application和四大组件启动时的方法顺序
以下顺序不考虑跳转情况Application 的 attachBaseContextContentProvider 的 onCreateApplication 的 onCreate 和 Provider 的 call方法Activity、Service 等的 onCreate(Activity 和 Service 不分先后)以及 BroadcastReceiver 的 onReceive 方法;
2017-10-28 09:45:22
525
原创 openGl2.0 3D
ShaderUtil:将着色器sh脚本加载进显卡编译 Activity主控制类:创建SurfaceView对象,然后调用setContentView跳转到相关界面 Triangle:初始化顶点数据,初始化着色器,设置相应的平移矩阵及旋转矩阵 SurfaceView:显示3D场景,创建渲染器Renderer 顶点着色器:顶点变换,纹理坐标变换 片元着色器:纹理的访问,颜色的汇总,以及雾效等操
2017-10-27 10:14:06
381
原创 jni
1、jni要先加载库static { System.loadLibrary("globalkeyif_jni"); }2、找方法public native int SetListener(JGlobalKeyIFEventListener listener,int iParam);
2017-10-27 09:20:29
269
原创 RadioButton
1.RadioButton一定需要分组,界面上有可能出现多组RadioButton,使用RadioGroup 2.RadioGroup是一个布局,继承于LinearLayout默认垂直排列,但是可以修改orientation//xml : android:checked 默认是否被选中,有bug//java :ischeck(),setCheck(); 使用java代码来做默认值,没有bug监
2017-10-16 11:00:47
251
原创 EditText
EditText属性digits :只允许输入的属性 inputType :数字型(自动弹出软键盘)、密码型(自动隐藏) hint :提示 textColorHint :提示字体颜色 imeOption :设置回车键的样式 maxLength :最大的字符个数获取焦点1.xml : 在EditText标签中加入标签 2.java : 用EditText的实例去调用reques
2017-10-16 10:59:25
323
原创 Toast
监听返回键//当用户点击返回键,自动调用该方法 public void onBackPressed(){}关闭Activity调用finish()方法关闭当前Activity , 如果当前Activity不是主活动,那么将返回到调用它的那个Activity显示Toast使用静态方法创建吐司对象,调用show方法展示到屏幕上Toast toast = Toast.makeText(Context
2017-10-16 10:53:56
307
原创 Activity
Application 应用程序单例模式,表示application是唯一的 每一个应用程序被启动时,就是application被创建 PID:进程的身份标识 UID:用户的身份标识 创建自己的application1.继承Application类 , 初始化构造方法(调用父类的构造方法) 2.在androidManifest.xml的中,使用android:name创建自己的a
2017-10-16 09:28:40
212
原创 事件分发
事件当用户触摸屏幕时,将产生点击事件(Touch事件)。//主要发生的Touch事件有如下四种:MotionEvent.ACTION_DOWN:按下View(所有事件的开始),只有一次MotionEvent.ACTION_MOVE:滑动View,可以有无数次MotionEvent.ACTION_CANCEL:非人为原因结束本次事件MotionEvent.ACTION_UP:抬起View(与D
2017-10-15 15:10:28
330
原创 数据存储
SpUtils/**保存数据**/SpUtils utils = new SpUtils(getContext(), "config");utils.put("shopName", shopBean.getShopName());utils.put("shopId", shopBean.getShopId());utils.put("areaId", shopBean.getAreaId()
2017-10-11 21:44:53
233
原创 百度地图
1.申请密钥cd .androidkeytool -list -v -keystore debug.keystore复制开发版SHA1值 42:28:A5:A3:30:54:7D:71:FA:31:4D:58:4C:8C:5A:45:0F:94:89:89keytool -list -v -keystore 发布版SHA1路径(需要打包生成)输入密钥库口令: 生成APK的第一个密码2E:F8
2017-10-11 14:24:13
275
原创 线程通信
线程 // 解决:分担UI线程耗时任务(修改UI、请求网络) // 子线程写法 1. new MyThread().start(); 2. new Thread(new Runnable).start(); 3. new Timer().schedule(new TimerTask());//Timer 必须销毁Looper子线程解决子线程并不能修改UI
2017-10-11 14:19:27
195
原创 常见错误
//没有引入网络包okiojava.lang.NoClassDefFoundError: okio.Buffer//子线程修改UIandroid.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views./
2017-10-11 14:16:40
1246
原创 系统服务
系统服务 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); //获取音乐声音的最大值 //获取当前的音乐值 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_
2017-10-11 14:15:26
173
原创 网络请求框架
retrofit_okhttppublic class Model { Retrofit retrofit;//需要添加四个依赖库 // OkHttpClient client; //服务器地址 public static final String BASE_URL = "接口-没有/一堆数字"; //public static final String ur
2017-10-11 14:13:16
199
原创 Service
Service启动方式Service引入是为了能够使程序后台运行//第一种启动方式(onCreate--->onStartCommand)context.startService(new Intent(this, MyIntentService.class));//停止服务 (onDestroy)context.stopService(new Intent(this, MyIntentServ
2017-10-11 14:04:19
183
原创 压力测试
1. 将需要测试的页面 设置为首页面2. 在minifest中加入分组 <category android:name="android.intent.category.MONKEY" />3. 在控制台输入adb指令 adb shell monkey -p 当前应用程序的包名 -s 毫秒级时间 -v 测试的次数
2017-10-10 20:31:04
504
原创 ListView组件
// MyListView----MyAdapter----监听Activity布局,listViewlistitem每一项的布局文件listitem每一项的数据自定义适配器Activity添加数据和适配器,并与listView绑定监听setOnItemClickListener
2017-10-10 20:28:21
305
原创 ExpandableListView
在Activity布局文件声明数据源: Map父布局、子布局适配器BaseExpandableListAdapter + 监听setOnChildClickListener + notifyDataSetChanged列表更新数据
2017-10-10 20:27:16
179
原创 ViewPager
自定义ViewPage适配器 PageAdapter FragmentPageAdapter(速度快) FragmentStatePageAdapter(内存大)监听数据源 List<View> List<Fragment>在Activity的布局文件中声明ViewPage(必须是V4包)在Acitivity里绑定Adapter vp.setAdapter(new
2017-10-10 20:24:56
166
原创 Bluetooth蓝牙
获取地理位置权限 private void checkVersion() { //获取蓝牙 //必须要权限, 并且是危险权限 (地理位置 6.0版本之后,必须地理位置的权限)。 //必须要判断用户是否给了权限 //6.0以后,才需要检测权限。 if (Build.VERSION.SDK_INT >= 23) {
2017-10-10 19:02:16
245
原创 广播接收者BroadcastReceiver
广播接收1. 创建BroadcastReceiver,在重写onReceive方法内,接收广播,获取广播中Intent的数据2. 注册BroadcastReceiver // 动态注册 registerReceiver(mbcr,filter); // 静态注册 AndroidManifest.xml注册3. 解除注册 unRegisterReceiver
2017-10-10 18:55:43
195
原创 Fragment
fragment生命周期onCreate过程Activity &&&& onCreateFragment **** onAttachFragment **** onCreateFragment **** onCreateViewFragment **** onActivityCreateonStart过程Activity &&&& onStartFragment **** Starto
2017-10-10 18:01:23
170
原创 Java其他
包装类1.基本数据类型和包装类可以相互转换,两者默认值还不同2.Boolean可以和boolean转换,也可以和String类型转换 (1)和boolean转换:自动装箱、自动拆箱 (2)和String类型转换: 1. 构造方法转换:Boolean b = new Boolean(“true1”);转换成功返回true,反之,返回false 2.
2017-10-05 17:29:31
140
原创 异常
异常概念1.程序不管产生什么异常都会导致程序中断return,这就需要我们去处理异常,保证程序能运行到最后,保证了程序的健壮性,runtimeException可以不用处理,程序不会报错,但还是会中断2.Throwable所有错误以及异常的父类 |-Error |-Exception |-RuntimeException |-NUllPointExc
2017-10-05 17:23:19
206
原创 IO流
IO流体系(学习构造方法就行)InputStream |-FileInputStream |-DataInputStream |-ObjectInputStream |-ByteArrayInputStreamOutputStream 很少用 |-FileOuterStream |-DataOuterStream |-
2017-10-05 17:19:15
237
原创 Java三大特点
封装1.封装又叫隐藏实现,隐藏属性、方法和方法实现过程,一般是将成员属性私有化,并对外提供set和get方法2.权限修饰符:private(本类访问) < default(同包访问) < protected(不同包的子类访问) <public(不同类访问)3.关联(聚合(set方法修改名称)、组合(构造方法传递名称))、依赖(方法参数、方法返回值)4.练习题: 1.Calendar日历类用法
2017-10-05 17:09:29
399
原创 常用快捷键
常用快捷键a) Alt+/ 代码提示 b) Ctrl+shift+s 保存 c) Ctrl+shift+f 美观 d) Ctrl+shift+O 快速导包 e) Ctrl+1 快速修复 f) Ctrl+O 快速找方法 g) Shift+alt+S 快速生成set、get方法 h) 花括号后
2017-08-12 11:19:46
175
原创 变量、数据类型和运算符
变量、数据类型和运算符 a) int 类型 ,4个字节,32位,-2147483648 – 214748364 b) char类型,根据编码格式计算的(GBK,GB2312,UTF-8) c) 数组、对象必须初始化 d) 变量要先声明后赋值再使用 e) 变量有生命周期,在同一生命周期内不允许重名 f) 变量名存放的是地址,地址指向内存中的一片空间,数据存放
2017-08-12 11:10:02
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人