自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u013470176的专栏

java基础及进击!

  • 博客(76)
  • 收藏
  • 关注

原创 Android BottomSheetDialog横屏模式下布局显示不全/状态栏黑色

引入产品提了个常规需求,从底部弹框显示性别选择框,以前直接用原生AlertDialog或者自定义Dialog,这次想来个不一样的,查看开发文档发现BottomSheetDialog也可以实现,并且自带手势滑动和动画,于是开搞,实现效果如下。效果可以。由于产品需要适配横屏,顺手试了下横屏,然后傻眼了,效果如下。横屏状态下自定义的view没有显示全,需要手动上滑才能完全显示。习惯性点了下BottomSheetDialog源码,发现走onStart时BottomSheetBehavior把状态设置成ST

2020-05-31 12:40:44 2808 1

原创 Android通过反射调用获取内置存储和外置sd卡根路径(全版本适配)

model如下,功能一目了然:public class FileInfo { // id value in DB public long id; // true if file is a directory public boolean isDir; // true if file is hidden public boolean isHidden...

2019-03-25 18:55:57 455

原创 AccessibilityService帮你实现Android全局悬浮窗

引入最近在做Android大屏,70寸全触摸,基于Android 5.0的AOSP开发(手动落伍=_=),屏蔽三大虚拟金刚键,所以需要在屏幕两边固定侧边栏代替虚拟键并实现开机自启.之前并没有开发过这种小工具,自然没啥经验,第一反应当然是去应用市场下载类似App体验一把,使用3个三方后发现它们都需要用户手动打开系统中的「无障碍」功能来模拟用户虚拟按键的点击事件,通过该突破口google一把,发...

2019-03-08 18:46:31 4424 3

原创 AOSP源码Gallery2和Launcher3导入Android Studio

本文适用于有一定Android源码编译能力的开发者,对AOSP没有什么概念的同学可以参考涅槃1992发表的文章:自己动手编译Android源码(超详细),正如作者所说,超详细,也很简单.引入我之前一直从事App开发,换工作后公司正在研发一款类似百度小度的带屏智能硬件,所以需要定制Android系统.花了一个月熟悉Linux开发环境和Android8.1的源码结构后,我接下了相册Galler...

2018-10-17 16:17:36 1260

原创 5分钟适配Android P和Android 8.0刘海屏,可能全网最全总结

前言刘海屏兴起的原因就不说了,只能说17年是最差劲的一届智能机了,说多了都是泪。既然局面已经这样了,咱们就来聊聊怎么解决刘海屏带来的屏幕适配问题。Android上的刘海屏出现在8.0系统上,小米、华为、vivo、oppo、一加、锤子等都有自家刘海屏手机,但Google是在Android P上才对其进行了适配,那对于开发者,8.0的刘海屏手机怎么适配呢?Android P呢?不急,下面我会通俗易...

2018-08-27 14:34:38 9566 1

原创 安卓8.0系统通知NotificationManager

开始从Android 8.0开始,使用系统通知Notification需要再设置下Channel,这就导致了版本兼容问题.为了解决这个,抽空写了个工具类,实现8.0系统上下都可实现正常通知功能.原型以今日头条为例,每次打开应用时,通知栏都会显示今天比较火的新闻,并且会显示一张隐藏的图片,具体效果如下2张:通知合并时通知展开时实现我觉得还是直接上代码比较好,没有使用m...

2018-11-14 15:14:46 4946 3

原创 Android Retrofit Http加密(无证书加密)

前提:本文基于Retrofit + okhttp(下面代码可以直接复制使用!)一、Retrofit常规使用如下:OkHttpClient okHttpClient =new Builder().readTimeout(READ_TIME_OUT, TimeUnit.SECONDS).connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS).c...

2018-06-08 11:13:23 870

原创 Android WebSocket加密

前提:本文基于Java-WebSocket-1.3.4.jar需求:公司App中有个WebSocket长链接需要加密,但现阶段不需要CA证书,实现一下。Java-WebSocket.jar怎么使用,相信不用我多说了,不会的可以百度下,不难,下面主要讲下怎么无证书加密。下面是一个加密工具类SSLSocketFactoryUtil:第一张第二张引入的包使用方法:用WebSocketClient的对象调...

2018-06-08 11:10:01 1121

原创 Android AsyncTask介绍和一个简单的小例子

一、AsyncTask的优点:1、简单,快捷2、过程可控二、AsyncTask的缺点:1、在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来三、Handler的优点:1、结构清晰,功能定义明确2、对于多个后台任务时,简单,清晰四、Handler的缺点:在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)五、介绍:

2017-11-23 23:29:44 465

原创 Android7.0 popupwindow位置错误解决办法

作为一名开发,同时也是一名搞机人士,某天看到自家产品在Android7.0系统上面的popupwindow位置出毛病了,如下图:然后看网上说是系统级bug,那就自定义一个popupwindow所有版本通用,如下:import android.graphics.Rect;import android.os.Build;import android.view.View;im

2017-06-26 17:40:20 2277

原创 Android ListView使用convertView解决内存溢出问题(推介使用recyclerview,listview已过时)

比方说在加载各种图片的时候,listview不及时回收的话,可能会造成内存溢出,这个时候就是看getview方法的时候了。public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder = null;      if(convertView

2015-12-22 14:27:19 3071

原创 Android ListView的回弹效果

使用动态布局实现该方法,重写ListView中的scroll方法可以实现该ListView的回弹效果:1、重写ListView中的方法:package com.isoftstone.pop;import android.annotation.SuppressLint;import android.content.Context;import android.util.Att

2015-12-21 14:22:11 1545

原创 Android ListView缓存对象

一、ListView列表控件每次滑动都会创建一个对象,那么为了复用缓存,可以使用ConverView参数,这样如果不想看到的item就会被回收,节省内存。二、convertView参数的功能怎么实现?convertView缓存对象,当滑动屏幕的时,子条目被隐藏,会被convertView给接受。三、convertView示例代码如下(主要看getView方法即可):im

2015-12-21 14:18:29 569

原创 Android ListView分页显示简单模拟实现

下面是一段listview分页显示的实力代码,很简单模拟出来分批加载数据的listview内容。package com.notice.moredate;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.os.Bund

2015-12-21 13:45:39 561

原创 Android ListView动画(逐行显示动画效果)

1、如果想在ListView中item条目出现时显示动画效果,那么可以使用系统的,或者是自定义的都可以,下面就是一个使用自定义动画的ListView动画演示:        android:id="@android:id/list"        android:layout_width="fill_parent"        android:layout_height=

2015-12-21 11:57:39 4523 1

原创 Android ListView的性能优化(ViewHolder和HashMap)

一、对于ListView的优化,一般步骤如下:1、复用convertView:首先讲下ListView的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再为每一个Item都创建一个View对象,必将占用很多内存,创建View

2015-12-21 11:50:14 1513

原创 ListView的点击事件、长按事件监听

一、点击事件 list.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView arg0, View arg1, int position, long id) { //do something? } }); 

2015-12-21 11:38:01 920

原创 ListView+BaseAdapter的使用方法

一、概念:listview就是一种逐行显示内容的控件,listview是遵循MVC设计模式的,二、经验:比方说textview空间中有显示内容的属性setText,那么listview控件想要显示自己的内容,也会相应的有显示内容的属性,这个属性就是“适配器”adapter,使用lv.setAdapter(adapter)设置显示内容,adapter是一个接口,实现该接口的需要复写的

2015-12-21 11:32:38 875

原创 ListActivity的使用方法

一般的activity都会在java文件中引入相对应的xml布局文件。但是在“比方说系统设置界面,黑色的那种类似于listview的界面”,可以使用ListActivity这个类来实现,当然因为相对应的显示界面一般只有textview文字内容,所以需要定义一个关于textview的item的xml文件布局。然后将设置相应的adapter,将实现定义的String[]数组内容放进去,下面将会

2015-12-21 10:10:36 1015

原创 Android JSON解析(JSONObject和JSONArray)

package com.example.tt;import java.util.HashMap;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bund

2015-12-18 17:51:01 610

原创 Android JSON的封装(JSONObject,JSONStringer两种方法)

创建如下所示的一个json文件:{  "phone" : ["12345678", "87654321"], // 数组  "name" : "yuanzhifei89", // 字符串  "age" : 100, // 数值  "address" : { "country" : "china", "province" : "jiangsu" }, // 对象  "marr

2015-12-18 17:21:14 7321

原创 Android BroadcastReceiver获取用户拨打的电话号码

一、步骤:1、注册一个广播接收者在清单文件中,内容如下:                                        2、创建一个继承了BroadcastReceiver类的自定义类,代码如下:import android.content.BroadcastReceiver;import android.content.Context;

2015-12-16 16:44:26 4009 1

原创 Android IntentService

1、相对于Service,IntentService有什么特点?普通的service ,默认运行在ui main 主线程,Sdk给我们提供的方便的,带有异步处理的service类,异步处理的方法OnHandleIntent(),OnHandleIntent() 处理耗时的操作2、下面是一段代码演示:(1)、点击启动IntentService:startService(n

2015-12-16 14:46:10 334

原创 LayoutInflater和findViewById的区别

一、概念:inflater是膨胀的意思,在Android中,应该是“扩展”的意思,LayoutInflater的作用类似于findViewById(),不同点是,LayoutInflater是用来寻找布局文件并且进行实例化的一个方法,而findViewById是具体到一个控件的对象,所以两者的范围是不相同的。二、代码演示:LayoutInflater inflater = (Lay

2015-12-16 11:39:04 512

原创 ImageView的ScaleType属性

当其属性是:1、matrix:是保持原图大小、从左上角的点开始,以矩阵形式绘图。2、fitXY:是将原图进行横方向(即XY方向)的拉伸后绘制的。3、fitStart:是将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。4、fitCenter:是将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图

2015-12-15 17:50:44 302

原创 imageswitcher+gallay实现相册功能

说明:使用ImageSwitcher控件+gallary控件可以实现点击下方gallary控件更换上面imageswitcher控件图片展示的功能。代码演示:public class mainactivity extends Activity implements  OnItemSelectedListener, ViewFactory { private ImageSwi

2015-12-15 17:46:26 517

原创 Android中Handler的使用

一、Handler的基本实现规则下面的例子是向Message中传递数值Bundle,然后handler将message传递出去。Handler myHandler = new Handler() {public void handleMessage(Message msg) {updateUIHere();}}new Thread() {public void

2015-12-15 11:46:32 329

原创 GLSurfaceView简介

GLSurfaceView提供了下列特性:                1> 管理一个surface,这个surface就是一块特殊的内存,能直接排版到android的视图view上。                2> 管理一个EGL display,它能让opengl把内容渲染到上述的surface上。                3> 用户自定义渲染器(rende

2015-12-15 11:12:13 464

原创 Fragment页面之间传值、基本例子演示、生命周期、兼容性

一、Fragment起初:3.0以后版本推出的Fragment二、Fragment之间的通讯:程序要求:创建一个侧边栏效果的fragment布局,左边是新闻分类列表,右面是没一个模块的内容。1、FragmentList.java文件的代码:import android.app.Activity;import android.os.Bundle;import

2015-12-15 10:45:38 620

原创 FloatingActionButton(FAB)的官方使用方法

一、FloatingActionButton——FAB使用非常简单,你可以指定在加强型FrameLayout里面——CoordinatorLayout,这个我们后面再讲。 关于FAB的使用,你可以把它当做一个button即可。二、布局代码:        android:id="@+id/fab"        android:layout_width="wrap_conten

2015-12-15 10:36:53 2931

原创 EventBus的关键函数介绍

1、onEvent:如果使用onEvent作为订阅函数,那么该事件在哪个线程发布出来的,onEvent就会在这个线程中运行,也就是说发布事件和接收事件线程在同一个线程。使用这个方法时,在onEvent方法中不能执行耗时操作,如果执行耗时操作容易导致事件分发延迟。2、onEventMainThread:如果使用onEventMainThread作为订阅函数,那么不论事件是在哪个线程中发布

2015-12-15 10:28:46 335

原创 dom、sax、pull解析的优缺点

一、dom解析:将整个xml文件装载到内存中,如果内存不足就挂掉,小文件dom比较占优势。使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。 二、sax解析:每次读取一点内容装载到内存中,和dom不一样。缺点就是一开始解析就停不下来。使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少三、pull解析:解决了dom

2015-12-15 10:23:16 2374

原创 Android-Dialog对话框进出场动画基础例子

下面演示的是一个AlertDialog的弹性进场出场对话框:1、逻辑代码:dialog = new AlertDialog.Builder(this).create();dialog.show(); final Window win = dialog.getWindow();win.setWindowAnimations(R.style.dialogWindowAnim);

2015-12-15 10:09:00 5989

原创 Dalvik虚拟机的堆内存溢出问题

1、首先内存方面,可以参考 Android堆内存也可自己定义大小 和 优化Dalvik虚拟机的堆内存分配2、Android系统主要用于低能耗的移动设备,所以对内存的管理有很多限制,一个应用程序,Android系统缺省会为其分配最大16MB(某些机型是24MB)的空间作为堆内存空间,我这里使用的模拟器调试的,这个模拟器被设定为24MB,可以在Android Virtual Device Ma

2015-12-15 10:03:51 722

原创 Android-BroadcastReceiver注册方式

见名知义,“广播”就是为了来获取的,比方说系统安装或者卸载了一个应用,都会发出一个广播,如果需要这个“广播”,自己定义一个自定义的BroadCastReceiver,在里面判断接收到的“广播”是什么,然后做出相应的动作。如果想要使用这个“广播”,有两种方式:1、在“清单文件中注册广播”,一般不这样做,因为这个优先级没有在代码中的高,并且,如果程序退出以后,这个广播还是存在的,也就是

2015-12-15 09:31:24 472

原创 Android-ArrayAdapter使用方法

一、简介:比方说像那个“网易新闻客户端”中,从左往右滑动将会出现slidingmenu菜单,里面有各种各样的条目,实际上就是继承的ArrayAdapter实现的,因为继承ArrayAdapter实现的都是一些简单的文本内容的展示,是有限的内容,不像BaseAdapter那样需要实现的方法很多。所以这种情况下一般使用的是ArrayAdapter继承的,所以自己要注意了!二、示例代码:

2015-12-14 14:52:36 871

原创 Android-Application类浅析

1、特点:Application类的生命周期就是整个程式的生命周期,所以是最长的!2、创建方式:通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加

2015-12-14 14:46:30 313

原创 Android中的ANR异常

一、概念:ANR(application not response或者是activity not response)应用程序无响应,如果一个比较耗时间的进程长期占用着主线程,那么主线程的UI就会长期无响应,这个时候就会出现应用程序无响应的现象,所以为了避免这样的情况的出现,那么一般使用的是将“耗时间”的线程放到子线程中执行,这样就避免了UI无响应的情况的出现。二、主线程:主线程也成

2015-12-14 14:40:56 671

原创 Android各个资源文件

assets:用于存放需要打包到应用程序的静态文件,以便部署到设备中。与res/raw不同点在于,ASSETS支持任意深度的子目录。这些文件不会生成任何资源ID,必须使用/assets开始(不包含它)的相对路径名。res:用于存放应用程序的资源(如图标、GUI布局等),将被打包到编译后的Java中。不支持深度子目录res/menu:存放基于XML的菜单描述;res/raw:

2015-12-14 14:38:19 301

原创 Android四种存储方式

四种存储方式:1、SQLite: SQLite是一个轻量级的数据库,支持基本SQL语法,是常被采用的一种数据存储方式。Android为此数据库提供了一个名为SQLiteDatabase的类,封装了一些操作数据库的API。2、SharedPreference: 除SQLite数据库外,另一种常用的数据存储方式,其本质就是一个xml文件,常用于存储较简单的参数设置。3、Fi

2015-12-14 14:35:42 500

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除