Android
billimg
这个作者很懒,什么都没留下…
展开
-
Android基本结构
Java 集合框架 ArrayList 多线程 线程启动 io 字节读写搭建环境 JDK 1.6以上 Android SDK Eclipse 4.4 ADT插件 配置android sdkSDK结构 extras:附加包,向下兼容包 platforms:主要的API platfom-tools:api工具,adb:手机和电脑连接的桥梁原创 2017-07-16 15:05:55 · 276 阅读 · 0 评论 -
openGl2.0 3D
ShaderUtil:将着色器sh脚本加载进显卡编译 Activity主控制类:创建SurfaceView对象,然后调用setContentView跳转到相关界面 Triangle:初始化顶点数据,初始化着色器,设置相应的平移矩阵及旋转矩阵 SurfaceView:显示3D场景,创建渲染器Renderer 顶点着色器:顶点变换,纹理坐标变换 片元着色器:纹理的访问,颜色的汇总,以及雾效等操原创 2017-10-27 10:14:06 · 372 阅读 · 0 评论 -
网络请求框架
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 · 193 阅读 · 0 评论 -
数据存储
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 · 225 阅读 · 0 评论 -
回调接口
A调用B的方法,传个参数过去 B调用A的方法,传个参数过去,A的方法称作回调方法,参数称作要监听的对象的数据,也可以称作监听后的结果原创 2017-10-31 10:29:30 · 231 阅读 · 0 评论 -
事件分发
事件当用户触摸屏幕时,将产生点击事件(Touch事件)。//主要发生的Touch事件有如下四种:MotionEvent.ACTION_DOWN:按下View(所有事件的开始),只有一次MotionEvent.ACTION_MOVE:滑动View,可以有无数次MotionEvent.ACTION_CANCEL:非人为原因结束本次事件MotionEvent.ACTION_UP:抬起View(与D原创 2017-10-15 15:10:28 · 327 阅读 · 0 评论 -
线程通信
线程 // 解决:分担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 · 186 阅读 · 0 评论 -
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 · 4729 阅读 · 1 评论 -
Android应用权限
开发Android应用时要在AndroidManifest.xml添加一些权限,但不是所有的权限都能被用户应用(UserApplication)使用,有些只能被系统应用(SystemApplication)使用。如果用户应用使用了权限,那么就会出现类似这样的错误信息: Not granting permission android.permission.INTERNAL_SYSTEM_WINDOW原创 2017-11-10 09:13:32 · 452 阅读 · 0 评论 -
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 · 190 阅读 · 0 评论 -
Application和四大组件启动时的方法顺序
以下顺序不考虑跳转情况Application 的 attachBaseContextContentProvider 的 onCreateApplication 的 onCreate 和 Provider 的 call方法Activity、Service 等的 onCreate(Activity 和 Service 不分先后)以及 BroadcastReceiver 的 onReceive 方法;原创 2017-10-28 09:45:22 · 504 阅读 · 0 评论 -
常见面试题
单线程模型汇中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 · 191 阅读 · 0 评论 -
逻辑分析(1)
项目整体框架是用RadioGroup显示四个不同的Fragment,HomeFragment,GoodsFragment,ShoppingCarFragment,MeFragment HomeFragment整体框架是套着PullToRefresh的垂直的线性布局,依次是TitleBarFragment,ViewPager,LinearLayout,LinearLayout,GridView。原创 2017-12-01 21:39:58 · 193 阅读 · 0 评论 -
OpenGLES
构造方法中初始化顶点和纹理public voiid initVertexData(){ float vertices[] = {顶点数 * 3};//顶点坐标 float buffer1 = CreateBuffer(buffer1,vertices); float texCoor[] = {对应顶点坐标 * 3};//纹理坐标 float buffer2 = Cre原创 2017-12-19 17:52:59 · 265 阅读 · 0 评论 -
OpenGL 之 着色语言
数据类型总的来说,数据类型分为标量,向量,矩阵,采样器,结构体以及数组等几类。 详细来说,分为内建的原生数据类型以及构建数据类型,如:浮点型(float),布尔型(bool),整型(int),矩阵型(matrix),向量型(vec2、vec3)等。1、标量:bool,int,float 2、向量: vec2:包含两个浮点数的向量 vec3:包含三个浮点数的向量 vec4:包含四个原创 2018-01-12 10:31:18 · 278 阅读 · 0 评论 -
OpenGL 2.0 之 裁剪与测试
剪裁测试基本原理:用于渲染时限制绘制区域,通过此技术可以再屏幕(帧缓冲)指定一个矩形区域。启用剪裁测试之后,不在此矩形区域内的片元被丢弃,只有在此矩形区域内的片元才有可能进入帧缓冲。因此实际达到的效果就是在屏幕上开辟了一个小窗口,可以再其中进行指定内容的绘制。核心代码如下:GLES20.glEnable(GLES20.GL_SCISSOR_TEST);//启用剪裁测试GLES20.g原创 2018-01-08 16:57:59 · 2214 阅读 · 0 评论 -
百度地图
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 · 266 阅读 · 0 评论 -
常见错误
//没有引入网络包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 · 1228 阅读 · 0 评论 -
系统服务
系统服务 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); //获取音乐声音的最大值 //获取当前的音乐值 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_原创 2017-10-11 14:15:26 · 169 阅读 · 0 评论 -
使用Intent进行活动间的跳转
显式Intentbutton1.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(MainActivity.this , SecondActivity.class); startActivity(intent);原创 2017-07-22 17:10:02 · 248 阅读 · 0 评论 -
动态代码创建布局
1.所有的xml中的组件都可以用构造方法来创建 2.setContentView(View view) 3.可以使用LayoutInflate来加载xml文件每一个布局都会有一个对应的LayoutParams的内部类 ViewGroup.LayoutParams layout_width layout_height ViewGroup.原创 2017-07-25 21:46:42 · 212 阅读 · 0 评论 -
android高级组件(1)ProgressBar,SeekBar,ScrollView
ProgressBar 2种样式 : 水平的(知道时间或者任务个数) 圆环的(不确定时间)水平的时候,需要设置max和progress属性 使用style来设置进度条的样式 使用?来引用android中的属性?和@的区别: ?只允许引用attr属性,会随着sdk版本的改变而改变 @ 在任意的sdk版本上都不会改变max:进度条的最大值 setMax和getMax progress原创 2017-07-31 22:16:34 · 374 阅读 · 0 评论 -
android高级组件(2)AutoCompleteTextView,MutiAutoCompleteTextView,Spinner,ListView
ListView 列表视图 支持数据源 divider : 分隔符 dividerHeight : 分隔符高度 listSelector : 被选中的条目变色,(如果需要按下变色,需要修改item布局的根布局属性) tools:listitem : 显示 默认的匹配布局 scrollbars : 右边的滚动条SimpleAdapter数据源:List<HashMa原创 2017-07-31 22:34:39 · 342 阅读 · 0 评论 -
用户访问资源
1.资源文件夹中不允许出现任何的大写字母,数字不能打头,不允许出现特殊字符,只允许[a-z][0-9a-z_.] 2.获取资源管理器 getResources()方法 3.获取屏幕getResources().getDisplayMetrics().widthPixels(heightPixels);字符串必须位于res/values中,位于<resources> <strin原创 2017-07-26 10:07:08 · 194 阅读 · 0 评论 -
Activity基础(4)
样式 一些属性的集合,设置了样式的组件会具备所有样式中的属性 整个app中重复率比较高的组件,一般会把属性提取成style//在res/values-v14 对应的sdk版本使用不同的样式<style name="MyTextViewStyle" parent=""> <item name="android:layout_width">wrap_content</item>原创 2017-07-27 21:59:51 · 197 阅读 · 0 评论 -
设计模式、Context、Toast
设计模式 单例模式 实例永远只有一个(工具类,应用程序) a.在整个工程中任意的地方获取到他的引用 b.全局数据共享。 // 1.懒汉式---直接在声明本类静态对象的时候,就直接初始化了 // 私有化构造方法 private User() { } // 创建本类静态实例 // 直接创建的实例就是懒汉式原创 2017-07-31 20:47:59 · 908 阅读 · 5 评论 -
jni
1、jni要先加载库static { System.loadLibrary("globalkeyif_jni"); }2、找方法public native int SetListener(JGlobalKeyIFEventListener listener,int iParam);原创 2017-10-27 09:20:29 · 261 阅读 · 0 评论 -
广播接收者BroadcastReceiver
广播接收1. 创建BroadcastReceiver,在重写onReceive方法内,接收广播,获取广播中Intent的数据2. 注册BroadcastReceiver // 动态注册 registerReceiver(mbcr,filter); // 静态注册 AndroidManifest.xml注册3. 解除注册 unRegisterReceiver原创 2017-10-10 18:55:43 · 187 阅读 · 0 评论 -
Bluetooth蓝牙
获取地理位置权限 private void checkVersion() { //获取蓝牙 //必须要权限, 并且是危险权限 (地理位置 6.0版本之后,必须地理位置的权限)。 //必须要判断用户是否给了权限 //6.0以后,才需要检测权限。 if (Build.VERSION.SDK_INT >= 23) {原创 2017-10-10 19:02:16 · 237 阅读 · 0 评论 -
android高级组件(3)适配器 ArrayAdapter,SimpleAdapter,BaseAdapter
适配器适配器简单点说,就是把数据源中的每一个元素按某种布局方式垂直排列,说到底还是一个布局所有需要适配器的高级组件,都有一个 setAdapter的方法,所以适配器一般配合setAdapter使用ArrayAdapterArrayAdapter 只能关联一个组件///自定义一个ArrayAdapter ArrayAdapter<T> adapter = new ArrayAdapter<原创 2017-08-03 21:55:29 · 317 阅读 · 0 评论 -
压力测试
1. 将需要测试的页面 设置为首页面2. 在minifest中加入分组 <category android:name="android.intent.category.MONKEY" />3. 在控制台输入adb指令 adb shell monkey -p 当前应用程序的包名 -s 毫秒级时间 -v 测试的次数原创 2017-10-10 20:31:04 · 497 阅读 · 0 评论 -
OpenGL 之 纹理贴图
概念1、图元:其实就是SurfaceView 2、纹理映射:为图元每个顶点指定纹理坐标,通过纹理坐标在纹理图确定纹理区域,最后将纹理区域的内容映射到图元上 3、纹理采样:图元上的每个片元在片元着色器根据纹理坐标的易变变量,从纹理图中提取对应位置颜色的过程 4、纹理图片:宽高必须是 2的n次方 5、多重纹理:对同一个图元采用多幅纹理图核心函数1、glGenTexture原创 2018-01-09 10:59:07 · 2044 阅读 · 0 评论