- 博客(36)
- 收藏
- 关注
原创 搬砖实录,Oksocket踩坑 ,物联网必备
先上代码 1.开始连接socket ConnectionInfo mInfo = new ConnectionInfo(SharedPerferenceUtil.getData(App.getInstance(), Api.ETCIP, "socket IP") + "", socket 端口号);OkSocketOptions.Builder builder = new OkSocketOptions.Builder();//设置重连 builder.setReconnectionMana.
2022-05-17 15:01:35 1598
原创 Android性能优化之网络优化
网络优化主要从三个方面进行;1、速度 2、成功率 3、流量一、 接口设计API设计1、App与Server之间的API设计要考虑网络请求的频次, 资源的状态等. 以便App可以以较少的请求来完成业务需求和界面的展示.。2、从前我们传输数据使用XML, 后来使用JSON代替了XML, 很大程度上也是为了可读性和减少数据量(当然还有映射成POJO的方便程度).3、Gzip压缩使用Gzip来压缩request和response, 减少传输数据量, 从而减少流量消耗.考虑使用Protoco..
2020-07-10 14:45:47 343
原创 Android 性能优化之UI
大家在开发应用的时候或多或少都遇到过可感知的界面卡顿现象,尤其是在布局层次嵌套太多,存在不必要的绘制,或者onDraw方法中执行了过多耗时操作、动画执行的次数过多等情况下,很容易造成此类情况。Android系统每隔16ms就会发送一个VSYNC信号(VSYNC:vertical synchronization 垂直同步,帧同步),触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的正常帧率:60fps。一旦这时候系统正在做大于16ms的耗时操作,系统就会无法响应VSYNC信号,执行渲
2020-07-10 11:23:49 212
原创 android 初步了解观察者模式
定义:定义对象间一对多的关系,当一个对象发生改变时候,所有和它相关联的其他对象都得到该对象更新的消息,从而做出对应的处理然而在android 系统中存在一个系统级别的Observable类 下面我们来定义一个被观察者public class MyObserver extends Observable { private static MyObserver ourInstance = null; public static MyObserver getInstance(...
2020-05-13 14:55:21 141
原创 修改状态栏颜色 字体颜色根据状态栏颜色自动变换
protected void setStatusBar(int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上 View decorView = getWindow().getDecorView(); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS .
2020-05-11 18:08:23 1146
原创 自定义progressbar
代码再次 很简单 <ProgressBar android:layout_width="match_parent" android:layout_height="15dp" android:progress="50" android:layout_gravity="center_horizontal" style="@style/Widg...
2020-05-07 16:29:14 151
原创 关于android自定义drawable 的使用
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="25dp" /> //圆...
2020-05-07 16:22:48 278
原创 解决android p以上即targetSdkVersion 27 网络请求异常的问题
原因:在Android P系统的设备上,如果应用使用的是非加密的明文流量的http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同理若应用内使用WebView加载网页 则加载网页也需要是https请求。解决方法:APP整体网络请求改用https 将targetSdkVersion 版本下调至27以下 更改项目网络安全配置 三种方法亦可,这里主要介绍一下第三种解...
2020-05-07 16:04:54 1264
原创 View、SurfaceView、GLSurfaceView、TextureView的区别
View:普通的View,与宿主窗口共享同一个绘图表面,UI在主线程中绘制,在有无硬件加速的情况下都能工作(没有硬件加速的情况下,canvas的有些方法会失效); SurfaceView:继承自View,绘制和显示效率高,因为拥有独立的绘图表面,UI在一个独立的线程中进行绘制,不会占用主线程的资源。SurfaceView的使用和普通的View不一样,需要结合SurfaceHodler...
2020-04-28 09:44:06 567
原创 EditText获取焦点并显示软键盘
/** * EditText获取焦点并显示软键盘 */ public static void showSoftInputFromWindow(Context activity, EditText editText) { editText.setFocusable(true); editText.setFocusableInTouchMod...
2019-01-23 09:37:15 415
原创 状态栏随着滑动颜色渐变的实现
类似qq好友动态页面那样发现随着滚动上面的状态栏颜色发生变化当然你必须知道沉浸式状态的实现方式才能这样做下面是我总结的沉浸式状态栏实现 https://blog.csdn.net/qq_22060403/article/details/80665650废话稍多接下来回归主题状态栏颜色渐变首先我们需要自定义一个scrollview public class MyNest...
2018-11-23 15:22:36 1325
原创 databing的简单使用
DataBinding是一个support library,所以它可以支持所有的android sdk,最低可以到android2.1(API7)。使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上。在Android Studio上使用,需要在module级别的build.gradle上添加对Dat...
2018-09-15 16:13:35 3376
原创 仿支付宝首页顶部滑动效果
最近开发有一个需求 仿照支付宝首页顶部滑动的特效,由于之前没写过,既然这次有这个需求,那我们就来好好的研究一下实现这个的需求 我们就需要了解一个新的布局 android.support.design.widget.CoordinatorLayout这个布局在design包里面 这时候我们就需要去添加依赖 下面我们来看看里面的简单布局 <android.support...
2018-07-21 15:40:08 2299
原创 tablayout 疑难杂症全析
从事移动开发也有将近三年的工作经验,经常会遇到标签页的需求,传统的方法我们会手动写出来相应的布局(不知道你们当时是如何写出来的,由于没有接触过,之前一直是自己写出来的),但是google最新推出个新的控件 tablayout 这个在一个新的文件包里面'com.android.support:design:27.1.0' 所以我们需要添加依赖然后我们的布局写法<Linea...
2018-07-21 15:24:58 266
原创 Android 设计模式之单例模式的五种实现方式
什么是设计模式? 其实简单的理解就是前人留下来的一些经验的总结,然后把这些经验起了名字叫设计模式, 通过使用设计模式可以让我们的代码复用性更高,可维护性更高,让你的代码写的更加优雅。 饿汉式public class UserManager { private static final UserManager ourInstance = new UserManager(); p...
2018-07-05 10:47:33 265
原创 一个不一样的diaolog 带回调
正常情况当我们需要实现一个dialog 时候我们需要还需要点击按钮时候 如果我们在当前界面写的时候显的代码有点乱 ,但是当我们将代码封装到一个类里面的时候 一些操作都是需要回调的 这样处理起来可能不是那么方便 下面是我的代码风格 这样做的话相对比较简单 public class HintAlertDialog extends Dialog { Context ...
2018-07-04 11:12:31 228
原创 判断当前应用是否在前台
在我们做一些应用的时候 ,往往会有一些需求,需要判断当前应用在前台还是在后台,让后一些操作,比如重新登陆,提示弹框什么的 这样就需要我们来做一些判断了 下面是我写的一些方法 public boolean isRunningForground(Context context) { ActivityManager activityManager = (ActivityManager) ...
2018-06-15 10:11:08 1126
原创 简单帧动画的实现
帧动画是动画属性里面比较重要的一种 我们用到做多的无非就是加载动画 下面我们来看看这个帧动画的简单实现 首先写布局 很简答的一个imageview <ImageView android:id="@+id/iv_waitearn" android:layout_width="76dp" android:layout_height="95dp" ...
2018-06-14 15:38:25 371
原创 沉浸式状态栏的实现
在Android 4.4之前,我们的应用没发改变手机的状态栏的颜色,当我们打开应用的时候,在屏幕的顶部有一天黑色的状态栏,和应用的风格非常不协调,为提供更好的界面交互,google在Android 4.4以后提供了设置沉浸式状态栏的方法,对于沉浸式状态栏的这个面工资存在争议,实际的效果其实是透明的状态栏,然后再状态栏的位置显示我们的自定义的颜色,通常为应用的actionabar的颜色。或者是将应...
2018-06-12 15:25:18 400
原创 文本较长,需要滑动才能看到其他的内容,不需要自定义啦
在项目中,有时会遇到一个固定行数的文本显示控件。有时我们采用textview来显示,利用走马灯来省略过多的内容。但是有时需要单行显示,多出的内容滑动来查看。大多数看到这种需求会想到自定义textview,看完这个,你就会发现原来edittext还可以这样使用。<EditText android:layout_width="120dp" android:layout_heigh...
2018-06-11 18:03:11 298
原创 开源可翻折的TextViewExpandableTextView
实现的效果图如下 ;点击查看详情把显示不全的数据显示出来 产接下里 接下来 我们来看下布局 <?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
2018-06-11 11:36:18 357
原创 一个有服务器建立长连接的demo
public class TcpLongSocket { public static final String TAG = "TcpLongSocket"; public static String HOST = "172.16.15.10"; public static int PORT = 44023; private ReadThread mReadThre...
2018-06-04 09:19:53 1245 1
转载 6种排序算法的工具类
import java.util.ArrayList;/** * Created by Cronous on 2018/5/24. * 该类主要用于对排序算法做一个整理,自己造轮子 * 包括以下6种排序算法 * 1.直接插入排序 directInsertSort(int[] inputArr) * 2.希尔排序(插入排序的增量版)shellInsertSort(int[] inputArr) * ...
2018-05-28 17:04:03 501
原创 商城类产品 在右上角添加状态的倾斜字体
这是需求 需要自定义控件继承textview,一下是代码 public class RotateTextView extends TextView { public RotateTextView(Context context) { super(context); } public RotateTextView(Context context, ...
2018-05-22 17:45:35 252
原创 Android中Glide加载圆形图片和圆角图片实例代码
//加载圆角图片 public static void loadRoundImage(final Context context, String url,final ImageView imageView){ Glide.with(context) .load(url) .asBitmap() .placeholder(placehold...
2018-05-07 14:20:49 281
原创 Activity Window View三者的差别
Activity像一个工匠(控制单元),Window像窗户(承载模型),View像窗花(显示视图) LayoutInflater像剪刀,Xml配置像窗花图纸。在Activity中调用attach,创建了一个Window创建的window是其子类PhoneWindow,在attach中创建PhoneWindow在Activity中调用setContentView(R.layout.xxx)其中实际上...
2018-05-02 15:59:45 621
转载 安卓开发之Activity的4种启动模式
一. Android启动模式具体解释1. Standard 标准模式说明: Android创建Activity时的默认模式,假设没有为Activity设置启动模式的话,默觉得标准模式。每次启动一个Activity都会又一次创建一个新的实例入栈,无论这个实例是否存在。生命周期:如上所看到的,每次被创建的实例Activity 的生命周期符合典型情况,它的onCreate、onStart、onResum...
2018-04-27 14:39:23 108
转载 Android性能优化
Android设备作为一种移动设备,不管是内存还是CPU的性能都受到了一定的限制,无法做到像PC设备那样具有超大的内存和高性能的CPU,这也意味着Android程序不可能无限制地使用内存和CPU资源,过多地使用内存会导致程序内存溢出,即OOM。而过多地使用CPU资源,一般指做大量的耗时任务,会导致手机变得卡顿甚至出现无法响应的情况,即ANR。Android的性能优化方法1,布局优化布局...
2018-04-26 13:38:42 160
转载 Fragment生命周期详解
Fragment依附Activity而存在,本文通过两个TextView切换两个Fragment来观察Activity和两个Fragment在不同操作下各执行哪些方法,从而对其生命周期有更加深刻的了解。通过打印log进行分析。本文要点:Fragment的动态加载,和切换。Fragment和Activity的生命周期分析。进入LifeActivity时,Fragment1显示:先执行LifeActi...
2018-04-24 09:32:56 123
原创 避免Bitmap引起的OOM技巧小结
1)采用低内存占用量的编码方式上一节说了BitmapFactory.Options这个类,我们可以设置下其中的inPreferredConfig属性,默认是Bitmap.Config.ARGB_8888,我们可以修改成Bitmap.Config.ARGB_4444Bitmap.Config ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位...
2018-04-19 16:10:08 248
原创 android listview的优化
listview作为Android中最常用的控件之一,可以以条目的形式展示大量的数据列表,对于每一个item,均要求adapter适配器的getiView()方法返回一个view,因此listview的实现,离不开Adapter。如果不对adapter的getView()方法进行优化的话,会造成内存被占用,这样如果数据量比较大的话,很容易造成手机内存被消耗,这样app的使用体验就很差。 @Ove...
2018-04-12 11:15:21 177
原创 比较火的okhttp+Retrofit进行网络请求
作为一个多年的Android开发的我来说,一个好的网络框架,在一定程度能够提升一个应用的可用性,这样我们就需要找到合适的网络框架,对于比较获得网络框架,前几天比较火的xutils,由于之前工作比较忙,一直没空去好好研究一个新的网络框架,最近闲来无事,了解了最新的比较火的网络框架,那就是okhttp,如果仅仅使用okhttp还不能真正的给自己带来很大的便利,如果加上Retrofit 这样的话就能很大...
2018-04-04 14:02:01 1917
原创 一行代码搞定漂亮的Android 6.0权限申请界面
Android 6.0(API 23)之前应用的权限在安装时全部授予,运行时应用不再需要询问用户,在 Android 6.0 或更高版本对权限进行了分类,对某些涉及到用户隐私的权限可在运行时根据用户的需要动态授予。这样就不需要在安装时被强迫同意某些权限。本人不才,发现一个开源的第三方库,使用时候时很方便的,废话不多直接上代码。Gradle:compile 'me.weyye.hipermissi...
2018-03-30 14:34:13 1053
原创 一个Activity 控制器 可以批量关闭activity
我们在开发的时候往往会需要一次关闭的不只一个见面,对于一些没做过这些功能的小伙伴,可能会无从下手,下面我来介绍下个人的做法,不喜勿喷。首先我们需要写一个工具类,用来存储需要关闭的activity,把activity放到一个集合里面,废话不多说,直接上代码。public class ActivityControl { //新建一个集合存放activity static List&l...
2018-03-27 14:16:53 305
原创 SharedPerference的一个简单封装
sharedperference 作为一个轻量级的本地缓存方式 ,以下是一个简单的封装,如有问题忘请赐教public class SharedPerferenceUtil { private static final String fileName = "ABC123"; /** * 保存数据到文件 */ public static void sa...
2018-03-27 11:30:05 248
原创 Android 仿ios 实现地址选择
// 滚轮控件的RecycleViewpublic class WheelRecyclerView extends RecyclerView { //默认参数 private final int DEFAULT_WIDTH = Util.dp2px(160); private final int DEFAULT_ITEM_HEIGHT = Util.dp2px(50...
2018-03-27 11:19:06 775
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人