![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
文章平均质量分 55
james荣
这个作者很懒,什么都没留下…
展开
-
替换PopUpWindow(解决焦点获取问题)实现顶部筛选菜单(顶部不变,底部阴暗)
很多人写顶部筛选菜单或弹窗都会用到PopUpWindow,但是PopUpWindow也不是万能的,现在商业App的一些界面功能实现使用PopUpWindow无法达到需要的效果(焦点问题,顶部明亮,底部阴暗问题)因此本人在此写了一个demo可以实现顶部弹出筛选布局(不使用PopUpWindow)核心代码如下:package com.example.james;import原创 2015-09-10 13:35:28 · 1526 阅读 · 1 评论 -
关于Java的输入输出流(InputString,OutputString)
InputStream:我们在读取网路流中数据的时候必须先得到InputStream,例如Java的URLConnection和Socket中都有getInputStream()这个方法来获取网路数据的输入流。得到InputStream后,就可以读取流中的数据,怎么读取呢?请看下文,有以下几种类型的数据(1)如果流中的数据只是字符串,那就很简单,看下图中的代码,BufferedRead原创 2016-01-28 12:16:51 · 4318 阅读 · 0 评论 -
java最常用的设计模式之一外观模式
外观模式定义:提供了一个统一的接口,用来访问子系统中的很多接口。外观定义了一个高层接口,让子系统更容易被客户端使用。外观模式基本上可以说是Java设计模式中最简单的一种设计模式了,该模式通俗简单来说就是当我们在客户端需要调用一个子系统(其实就是一个比较大的功能模块啦,或一个外部的SDK),客户端一般的做法可以是调用那个子系统中所有需要实现这个功能的方法,但是这样做会使整个系统的耦合性大大提高,原创 2016-02-01 17:24:07 · 683 阅读 · 0 评论 -
android apk异常卸载后无法安装的解决办法
手机先获取root权限,然后cmd进入命令行,输入adb shell,回车;cd data/data,回车进入到该文件夹目录;rm -rf 包名 回车原创 2016-03-09 10:20:29 · 934 阅读 · 0 评论 -
Android handler导致的内存泄漏
Handler的生命周期与Activity不一致 由于Handler属于TLS(Thread Local Storage)变量,生命周期和Activity是不一致的。 当Android应用启动的时候,会先创建一个UI主线程的Looper对象,Looper实现了一个简单的消息队列,一个一个的处理里面的Message对象。主线程Looper对象在整个应用生命周期中存在。 当在主线程中初始化原创 2016-09-12 10:42:07 · 355 阅读 · 0 评论 -
源码分析Android消息传递机制
基础知识:理解和使用Handler需要用到四个类:Handler,Looper,Message,MessageQueue。这四个类是如何交互的呢?大概思路:(1)发送消息: handler发送message消息,looper将消息放到messageQueue;(2)处理消息:Looper在创建后会开启一个死循环,这个死循坏会读取messageQueue里面的message,一旦有消息,机会马上原创 2016-09-18 16:50:45 · 365 阅读 · 0 评论 -
Android SurfaceView中的Surface,openGL es中 EGLDisplay,EGLConfig,EGLContext,EGLSurface
Android 使用openGL ES必须创建的几个关键类:(1) EGLDisplay的创建:EGL14.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY)(EGL10也可以)。(2) EGLConfig的创建:可以实现EGLConfigChooser接口,需要用到EGLDisplay参数(3) EGLContext的创建:调用egl接口 eglCrea原创 2016-11-23 20:34:53 · 7433 阅读 · 0 评论 -
Android openGL ES2.0 Matrix.frustumM和Matrix.setLookAtM解析
Android使用OpenGL ES2.0绘制3D图像或者加载3D模型时,为了达到立体效果往往需要设置视见转换矩阵和投影转换矩阵即 Matrix.setLookAtM(mVMatrix, 0, cx, cy, cz, tx, ty, tz, upx, upy, upz) 和 Matrix.frustumM(mProjMatrix, 0, left, right, bottom, top, near原创 2017-01-11 12:00:00 · 8071 阅读 · 1 评论 -
mac os x下配置Android Studio本地gradle
新建Android studio的项目,打开项目的gradle.wrapper包里面的gradle-wrapper.properties文件,会看到如下内容 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/di原创 2017-06-18 11:24:30 · 11921 阅读 · 1 评论 -
android studio terminal jni 生成头文件命令
切换到java目录下。javah -d ../cpp(生成头文件的目录) com.example.yeguangrong.opengl.detect.FaceDetectImpl(目标文件)原创 2017-06-27 14:21:41 · 559 阅读 · 0 评论 -
最常用的Java设计之一 观察者模式 在android中的实例 ListView Adapter机制
我们都知道ListView都必须有设置适配器的这个步骤,即setAdapter(ListAdapter adapter),而在这里andriod framework使用到了Java观察者模式。在你看下面的解析之前,读者必须要先对观察者模式有一定了解,因为下面的解析都是观察者的应用实例,没有对观察者的概念和简单实例进行讲解 mAdapter = adapter; mDataSetO原创 2015-12-26 14:17:19 · 525 阅读 · 0 评论 -
Java 引用
java对象的强引用,软引用,弱引用和虚引用众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也转载 2015-12-08 10:55:33 · 374 阅读 · 0 评论 -
android Java 面向对象编程之 interface
interface 是Java实现多态的一种方式(其他的还有继承,重写等等),Java不允许多继承(一个类继承多个类),但是可以实现多个接口。 在项目开发中我们一般什么情况下才会用到interface呢?设计模式中有种比较常用的设计模式,叫做构造者模式,通常情况下我们实现的功能只需要在一个类中的方法就可以直接实现,但是我们不可能把所有的方法都放到同一个类中,我们需要把不同的实现功能放在不原创 2015-09-18 09:00:09 · 429 阅读 · 0 评论 -
android关于Handler更新UI的用法
Handler 在android开发的Activity组件中会经常经常用到,那Handler有什么用呢?Handler在什么样的情况下会用到呢? 现在我来说一下比较常用的一种情况。一般Activity 一开始会加载主线程,如果页面上的数据是静态的,也不用怎么改变和交互,这种情况下完全用不上Handler。但是一般的app都离不开网络数据的动态加载(加载数据后需要更新UI),或者有一些数原创 2015-09-17 21:42:35 · 674 阅读 · 0 评论 -
非常实用的android动态注册广播并发送以及接收实例
广播是android四大组件之一,很多情况下数据的传递是用过Intent发送, 跳到另外一个Activity就可以接收数据然后更新UI了,但是如果不是跳到另外一个Activity的情况下数据是怎么传递的呢?就需要使用BroadcastReceiver下面我使用动态注册的方式来注册广播传递数据。先写一个广播接收器类需要继承BroadcastReceiverimport andr原创 2015-09-18 11:17:10 · 9155 阅读 · 0 评论 -
做一个下拉刷新必须需要掌握的android知识点
下拉刷新,随便到csdn服务器,gitbub上去找,去下载,有一大堆.现在我总结了一下要真正做一个下拉刷新的效果需要熟悉的android知识点,后面会持续更新。第一点:android的事件分发(DistpatchTouchEvent),事件分发里面必须掌握(1)onTouchEvent(MotionEvent event);(2)onInterceptTouchEvent(Motion原创 2015-11-16 11:25:43 · 453 阅读 · 0 评论 -
编译ffmpeg
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := ffmpeg include $(LOCAL_PATH)/config.mak LOCAL_CFLAGS := -DHAVE_AV_CONFIG_H -std=c99 AVUTIL_C_原创 2015-11-20 15:51:26 · 450 阅读 · 0 评论 -
android内存优化
android对内优化的方法有很多,下面简单介绍几种(1)用SparseArray代替HashMapSparseArray是Android框架独有的类,在标准的JDK中不存在这个类。而HashMap是JDK中的类,SparseArray要比 HashMap 节省内存,某些情况下比HashMap性能更好,按照官方问答的解释,主要是因为SparseArray不需要对key和value进行aut原创 2015-12-28 16:36:01 · 318 阅读 · 0 评论 -
android 实现流式布局FlowLayout
import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.View;import android.view.ViewGroup;/** * @author YeGuangRong * */publi原创 2015-12-14 18:58:48 · 370 阅读 · 0 评论 -
Java设计模式之模板方法模式在android中的实例
我们在开发android应用时,模板方法模式在什么情况下会使用呢?如果仅仅是查看android的框架层代码,会发现非常多的地方使用到了模板方法模式,例如public void layout(int l, int t, int r, int b)。但是当我们写功能模块时也会遇到需要使用模板方法的,最常见的情况就是我们的应用中会有很多地方使用到网络请求,每个请求都会有一定的共同的操作和不同操作,这原创 2016-01-05 13:55:23 · 413 阅读 · 0 评论 -
LinearLayout中的属性baselineAligned的使用
Android线性布局中的属性主要的就是控制浮动方向的orientation,其他的就是辅助浮动显示的,其中有一个属性控制基线,也就是baselineAligned,让我有点迷惑,下边通过例子讲解下这个属性的使用。1.首先这个基线主要是对可以显示文字的View,如TextView,Button等控件的2.这个baseline指的是这个UI控件的baseline--文字距UI控件顶部转载 2015-12-24 12:27:11 · 373 阅读 · 0 评论 -
android surport
google提供了Android Support Library package 系列的包来保证来高版本sdk开发的向下兼容性,即我们用4.x开发时,在1.6等版本上,可以使用高版本的有些特性(即低版本的手机或者模拟器能够使用在高版本下开发的应用中的特性),如fragement,ViewPager等,下面,简单说明下这几个版本间的区别:Android Support v4:这个包是为了照顾转载 2015-12-08 10:11:46 · 435 阅读 · 0 评论 -
Android 官网网址
https://developer.android.com/原创 2017-06-17 12:05:46 · 2803 阅读 · 0 评论