自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 屏幕适配--修改系统density进行屏幕适配

上次发了自定义像素适配后,有小伙伴问我修改density到底是怎么做的。遇到这个问题,我是懒得写一篇博客来说明的,但是当我准备搜一篇发链接给他时,看到好多博客写的并不完整或者看不明白,所以我就自己写吧主要代码如下:import android.app.Activity;import android.app.Application;import android.content.ComponentCallbacks;import android.content.res.Configuration;

2022-04-12 11:36:53 1159

原创 flutter环境搭建

flutter环境搭建需要写一个flutter 程序,但是发现之前搭建的flutter被破坏了,需要重新搭建一次,在此记录一下下载flutter SDK大部分时候需要科学上网,有时候也可以直接访问下载地址是: https://flutter.dev/docs/development/tools/sdk/releases目前的最新版本是1.22.6点击对应的版本链接进行下载。(如果浏览器无法下载,建议使用迅雷,速度会明显提升很多)Flutter SDK安装解压下载的SDK zip包到本地路

2021-03-02 15:13:36 188

转载 Android屏幕适配之--自定义像素的缩放比例来实现屏幕适配

在Android的适配中,可以采用自定义布局的形式,来通过计算像素的缩放比例来实现适配。大致思路就是,通过拿到设备实际的长宽像素值来除以参考设备的长宽值,得到这一个比例值,在设置控件的长宽值得时候,拿到开发者指定的长宽值乘以这个比例值,就能得到控件的实际显示大小了,公式大致如下:scaleX = 设备实际像素值 / 参考设计图的像素值控件实际像素值 = 开发者设置的像素值 * scaleX实现方案如下:首先我们通过一个工具类来获取设备在X方向和Y方向上的像素值比例public c.

2020-08-31 15:32:15 615

原创 性能优化之Apk瘦身

瘦身的理由:1、安装包变大,导致很多用户不愿意安装更新2、安装包变大,导致新用户不愿意下载3、安装包变大,流量使用增多,增加其他边际成本图片优化:使用矢量图片矢量图片只需要放置一份2、图片如果比较大,绘制的时候会很长,制作复杂度高使用WebP体积更小,4.2.1+支持透明度使用png有透明度,渐变,阴影的情况下选择pngpng转WebPAndroid Studio 选中图...

2020-03-26 17:34:34 277

原创 rz传文件失败的解决

犯了个低级错误,记录一下。今天在编译一个库的时候,写了个脚本,通过rz命令传到linux服务器上(如果找不到这个命令,可以用yum install -y lrzsz 安装)第一次编译的时候发现有问题,改了一下再上传的时候,发现怎么都传不上去仔细看了一下,发现我要上传的文件已经在这个目录中了。删除这个文件,再上传的时候,就可以正常上传了...

2020-03-23 15:47:16 1934

转载 Windows10访问共享总是提示输入网络凭证不正确

场景:安装了windows10系统后,访问共享时总是提示输入网络凭证,输入什么都提示不正确。被访问机也是windows 10 操作系统,使用windows7不需要输入密码就可以访问,即使在被访问机上增加新的用户或者用guest账号去登录也会提示出错。在本地访问机修改共享设置、修改组策略都没有用,在网上找了如下方法最终解决登录问题。http://bbs.pcbeta.com/viewthread...

2019-11-12 22:27:18 12523

原创 Activity堆栈管理小技巧

开发中,我们常会遇到这样的需求:从主界面跳转多个界面完成某项功能,如果这项功能没有做完,可以随时回退到上一个界面,如果最后一个节目的子功能也完成了,一次性关闭这些页面,跳转回主页面。分析:从A界面跳转到B系列界面完成一项功能。即需要从A界面跳转到B1界面,完成B1界面的子功能之后,再跳转到B2界面,完成对应的子功能…,直到跳转到B5界面,完成B5界面的子功能之后,点击“完成”按钮之后,跳转到...

2019-11-08 14:50:23 248

原创 禁止迅雷极速版强制升级方法

迅雷强制升级已达到丧心病狂的程度,就是升级到新版本,也是限速严重,作死。本文方法只针对迅雷极速版。1.进入迅雷安装目录中的Data目录,找到ThunderPush文件夹并删除,如果没找到这个文件夹,就直接新建一个ThunderPush文件夹。2.然后右键ThunderPush文件夹→属性→,勾选“只读”,安全→编辑→完全控制勾选“拒绝”,并应用。可以双击文件夹如果有访问权限提示,说明设置...

2019-08-01 10:50:47 1501

原创 java.io.IOException: Cleartext HTTP traffic to com.yuhao.demo not permitted分析

今天在写demo测试的时候,运行出了一个错误,并且网络无法访问,在此记录一下。如果你运行的设备是Android9.0及以上版本,在进行网络访问的时候,没有使用https加密的方式,就会爆出这个错误。原因分析从Android 6.0开始引入了对Https的推荐支持,与以往不同,Android P的系统上面默认所有Http的请求都被阻止了。本usesCleartextTraffic属性的默认值从...

2019-07-14 21:13:50 982

原创 ffmpeg命令大全

ffmpeg命令大全FFMPEG 目录及作用FFMPEG基本概念FFMPEG 命令基本信息查询命令主要参数视频参数音频参数录制录屏分解与复用滤镜简单滤镜复杂滤镜直播相关前言FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。本文将简要介绍一下 FFMPEG ...

2019-07-04 16:02:32 30537 9

原创 Android Studio编译异常Error: Program type already present: android.support.design.widget.CoordinatorLayo

记录一下,希望能帮到小伙伴解决的方案在build.gradle修改:implementation "com.android.support:design:25.1.0"修改为:implementation "com.android.support:design:27.1.0"这里说明一下为什么要改为27,是因为我的compileSdkVersion = 27最后Build一下就...

2019-05-06 15:40:46 916 1

原创 "No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"错误的解决

今天由于项目需求的原因,在网上找到一个3年前的demo,需要打开看一下,打开这个工程后,编译提示"No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android"再论坛里也找到了解决办法,就是下载旧版的NDK,将其中的toolchain复制到新版的NDK中但这不是解决的根...

2019-04-25 17:37:02 173

原创 Android Studio离线配置gradle(附gradle下载地址)

导入新的android studio工程后常常因为多种原因无法联网进行gradle下载,只能寻找离线手动配置gradle的方法,踩过不少坑后,最终通过以下几步解决:1. 下载与自己安装的android studio版本 匹配的gradleGradle下载地址:https://services.gradle.org/distributions/我用的是android studio3.3 ,所以...

2019-02-07 22:06:47 26699 1

原创 maven,jcenter下载不了?国内镜像解决

导入新的工程时经常需要下载好多库,有些库因为种种原因无法下载下来。这时候,可以有以下的解决方案。解决方法一:https:改成 http协议下载// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { reposit...

2019-01-11 16:08:08 12196 2

原创 Android多线程概况

Android沿用了Java的线程模型,一个Android应用在创建的时候会开启一个线程,我们叫它主线程或者UI线程。如果我们想要访问网络或者数据库等耗时操作时,都会开启子线程去处理(为了避免主线程被耗时操作阻塞而产生ANR),也说明了多线程在Android应用开发占据这十分重要的地位。1.线程基础1.1、线程和进程1.1.1.什么是进程进程是操作系统结构的基础,是程序在一个数据集合上运行...

2018-12-28 18:40:23 384

原创 Android主流三方库Retrofit使用深入解析

1.Retrofit基本用法1.1 使用前的准备工作首先配置build.gradle,如下dependencies { implementation 'com.squareup.retrofit2:retrofit:2.5.0' implementation 'com.squareup.retrofit2:converter-gson:2.5.0'}最后一行是为...

2018-12-24 18:23:38 615

原创 解析OKHttp

今天来说一说最近比较流行的一个网络请求库OKHttp,从Android4.4开始,系统内置了OKHttp,可见OKHttp功能的强大。1.OkHttp的基本用法1.1 使用前的准备首先配置gradle,如下所示:implementation ‘com.squareup.okhttp3:okhttp:3.12.0’不要忘了在manifest中添加网络权限.1.2 异步GET请求最简...

2018-12-20 16:56:42 999

原创 设计模式之--单例模式(7种写法)

1、单例模式介绍单例模式是应用最广的设计模式之一,也可能是很多初级工程师唯一会使用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体行为。如在一个应用中,应该只有一个ImageLoader实例,这个ImageLoader中又包含有线程池,缓存系统、网络请求等,很消耗资源,因此没有理由让它构造多个实例。这种不能自由...

2018-11-27 20:49:31 305

原创 Android中的异常信息收集

我们知道,不论程序怎么写都很难避免不会crash,。当程序出现crash之后,虽然我们无法使其进行运行,但是如果可以知道crash的具体原因,那么我们就可以修复错误。很多时候,产品发布之后,如果用户出现了crash,这个crash信息是很难获取到 的,非常不利于产品的持续发展。虽然目前市面上有不少提供异常信息回传的第三方sdk,但是我个人认为了解这方面的原理也非常重要。一方面,如果第三方平台出现...

2018-11-27 11:19:05 1224

原创 Android IPC

1.Android IPC介绍IPC是Inter-Process Communication的缩写,含义为进程间的通信或者跨进程通信,指的是两个进程之间进行数据交换的过程。首先,我们要区分一下"进程"和"线程"。按照操作系统的描述,线程是CPU调度的最小单元,同时线程是一中有限的资源。进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。一个进程可以包含多个线

2018-11-26 11:29:28 329

原创 Android的消息机制

Android的消息机制主要是指Handler的运行机制,Handler的运行机制需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列,顾名思义,它的内部存储了一组消息,以队列的形式对外提供插入和删除的工作。虽然叫消息队列,但是它的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息列表。Looper的中文翻译为循环,这里可以理解为消息循...

2018-11-26 11:28:07 122

原创 Http协议之请求报文

要想在网络上进行通信,我们首先需要知道网络的构成和网络通信所使用的协议。现在互联网所遵循的是OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。分为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。当然做一部分简化,有分五层的:1、物理层该层负责数据流的传输,即负责物理传输。这...

2018-11-20 10:41:48 592

原创 Android Studio出现Could not find intellij-core.jar错误的解决方案

今天看到微信群里有人从网上下载了一个项目,结果导入的时候出现了这个错误,然后一群人在讨论是不是google被墙的原因。我去年也遇到过这个问题,因为是个小问题,所以也就没有记下来,现在记下来吧,如果你也遇到了这个问题,希望可以帮到你导入项目之后,直接提示Error:Could not find intellij-core.jar (com.android.tools.external.com-i...

2018-11-13 18:42:39 4832 2

原创 解析EventBus

记得年初公司招人,在面试的过程中我问过这个问题“android中两个Activity之间常用的传递消息的方式有哪些?”应聘者的答案集中在1.Intent2.广播3.全局变量和Application4.Android系统剪切板5.本地化存储方式6.一些android组建一部分还能说出**“事件总线(如EventBus)”**所以今天就来分享一下我自己使用EventBus的一些体...

2018-11-08 11:12:44 224

原创 面向对象的六大原则

面向对象的六大原则1.1 优化代码的第一步:单一职责原则1.2让程序更稳定、更灵活:开闭原则1.3 构建扩展性更好的系统:里氏替换原则1.4让项目拥有变化的能力:依赖倒置原则1.5系统有更高的灵活性:接口隔离原则总结1.1 优化代码的第一步:单一职责原则“这是一个备受争议却又极其重要的原则。只要你想和别人争执、怄气或者是吵架,这个原则是屡试不爽的”。因为单一职责的划分界限并不总是那么清晰,很多...

2018-11-05 16:00:47 1175

转载 关于Chrome 69 版本 一些改变以及设置

前几天Google更新Chrome 69版本感觉变化是最大的,很多童鞋都不能适应… 关于Chrome 69 版本 一些改变以及设置Chrome 69浏览器离线下载地址: Stable 稳定版 32 位:69.0.3497.81 Stable 稳定版 64 位:69.0.3497.81 Chrome 69 更新的主要功能: 界面变化. 更聪明的搜索框-smarter Om...

2018-09-11 22:02:50 4054

原创 Android捕捉异常信息推送到钉钉群

前言在开发过程中,不时会遇到崩溃或者运行异常。对于一些不容易复现的bug我们更希望有详细的数据以便于详细分析。对于崩溃信息的记录,一般的方法有:1、用bugly等工具,崩溃之后,直接上报到对应网站,可以登录响应的网站查看。2、收集崩溃信息发送到邮箱。对于一些运行异常(没有出现崩溃,但是程序走到了正常情况下不应该走到的地方)我个人比较常用邮箱。 现在我们可以试另一种更快捷的方式,就是推送异...

2018-08-23 12:04:54 1200

原创 Android Studio 3.1 加速编译速度

优化配置:1、gradle运行相关的配置 (gradle.properties文件中) The Gradle daemon aims to improve the startup and execution time of Gradle. # When set to true the Gradle daemon is to run the build. # TODO:...

2018-05-18 10:08:52 9911

原创 进行JNI编译时出现的问题总结

今天进行jni编译生成.h文件时出现报错java -jni 错误: 编码GBK的不可映射字符 什么情况?我的整个工程所有的文件都是UTF-8编码的啊,怎么会出现GBK呢?出现这种错误的原因是由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式。 在我的Windows上进...

2018-05-10 15:11:04 428

原创 Android Fragment重影的解决方法

最近在使用fragment进行开发的过程中,遇到了重影问题多个Fragment的内容重叠在一起了其表示如下图所示:解决这个问题的方法是,给每个fragment的rootView设置一个背景颜色如下:

2017-10-12 15:20:31 766

原创 JNI Android Studio配置过程

准备工作:下载NDK。简单的说,要用到C/C++,就要用NDK。直接百度搜索然后去官网下载就行,位置可以随便放。 Let’s Go!!!在AS中新建一个Project,然后再新建一个class为NdkJniUtils,在内部声明native方法(jni使用的定义,后面系列教程会细说)。package com.example.yuhao.rxtest;public

2017-09-06 12:37:17 254

原创 从朋友圈一道小学试题想到的

最近在朋友圈看到一道题 使用java语言写出代码如下:package test11;import java.math.BigDecimal;import java.text.DecimalFormat;public class Compute {public static void main(String[] args) {

2017-08-04 10:58:29 391

原创 无线安全审计工具aircrack-ng详解

无线渗透试的工具有很多,在windows下和Linux下的工具各有千秋,因在windows下的工具基本都是图形界面,操作起来比较直观易懂,在此就不再做过多介绍,本方重点介绍在linux下的一种通用的方法。首先讲一下现行无线渗透试的一般方法和原理。目前无线渗透试的两种方法:1、抓握手包,跑包。2、通过WPS进行跑pin码 当然第2种方法是要求路由器开启了wps功能。并且要求路由器没有设置

2017-07-26 20:03:04 1687

原创 URI is not registered ( Setting | Project Settings | Schemas and DTDs )

URI is not registered ( Setting | Project Settings | Schemas and DTDs )今天新引入 了一个插件之后发现xml文件报错了很明显的两行错误提示。将鼠标放在上面,软件会提示“URI is not registered ( Setting | Project Settings | Schemas

2017-07-26 19:55:21 1926 1

转载 Android学习资料收集

博客stormzhang博主是上海薄荷科技开发主管, 他的博客分享了他从编程白痴到自学 Android 一路走过的经验, 写了一篇 Android学习之路 帮助了无数人, 里面还有很多好的文章非常适合新手入门, 并且是微信公众号「AndroidDeveloper」的运营者, 可以算是 Android 界最有影响力的公众号之一了, 强烈推荐关注胡凯目前就职于腾讯上海从事

2017-06-25 11:10:32 912

翻译 高效程序员的特征

1.主动学习新技术与非技术方面的新知识      好的程序员应该一直保持主动学习的状态,无论是技术方面或是非技术方面的知识,都应该涉猎和容纳。眼界不仅仅限于技术层面。程序员不应该将自己定义为XXX工程师(XXX任选一门编程语言补上)。反省自己虽然有关注较新的技术,但关注得比较多的是自己从事的JavaWeb方面。太局限于一种语言与平台。2. 务实而不教条     

2017-06-25 10:57:37 313

空空如也

空空如也

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

TA关注的人

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