当前分类 / 工具 / 总共14篇

如何在 Android 中获取 Heap Dumps

Heap Dumps 是诊断内存相关问题(如内存泄漏、垃圾收集问题和 java.lang.OutOfMemoryError )的重要工具。它们也是优化内存使用的重要工具。在本文中,我们提供了一些不同的方法来从 Android 应用程序捕获 Heap Dumps。一旦捕获了 Heap Dumps,就可以使用 HeapHero 和 Android Studio’s Heap Analyzer 等强大工具来分析 Heap Dumps。

Memory Profile

下面是在 Android Studio中从 Memory Profile (内存分析器)捕获 Heap Dumps 的步骤:

第一步:运行 app 并选择你要分析的设备。

第二步:在 Android Studio 中点击 View → Tool Windows → Android Profiler。

第三步:在 Android Profiler 中会有一个内存变化的时间轴,这个内存(MEMORY)时间轴位于处理器(CPU)时间轴之下,网络(NETWORK)时间轴之上。双击进入内存时间轴详情,然后就可以点击下载图标进行生成 Heap Dump, 如下图:

生成 Android 的 Heap Dump

阅读更多

屏蔽网页鼠标右键或键盘F12并解除屏蔽的方法

很多时候我们的网站内容会被别人拿过去做伪原创,这样就比较难受了,自己辛辛苦苦写了大半天结果被别人直接复制黏贴了,为了避免这样的悲剧频繁发生,很多人给自己的网站添加了屏蔽鼠标右键和 F12 键的 js 代码,例如下面是用 jQuery 实现的一段屏蔽鼠标右键的代码:

$(document).ready(function(){  
    $(document).bind("contextmenu",function(e){   
          return false;   
    });
});

不使用 jQuery 可以修改如下等效的代码:

<script language="JavaScript">
     document.οncοntextmenu=new Function("event.returnValue=false;");
     document.onselectstart=new Function("event.returnValue=false;");
</script>

阅读更多

Android项目优化检测工具Lint

前言

我们在实现Android界面功能之外还需要考虑结构对性能、维护成本的影响。例如,如果 XML 资源文件包含未使用的命名空间,则不仅占用空间,还会导致不必要的额外处理。其他结构问题,例如使用目标 API 版本不支持的已弃用的元素或 API 调用等,可能导致代码无法正常运行。Android Studio 提供一个名为 Lint 的代码扫描工具,可帮助您发现并纠正代码结构质量的问题,而无需实际执行该应用,也不必编写测试用例。

Lint工作流程

该工具会报告其检测到的每个问题并提供该问题的描述消息和严重级别,以便您可以快速确定需要优先进行哪些关键改进。此外,您可以调低问题的严重级别,忽略与项目无关的问题,也可以调高严重级别,以突出特定问题。

Lint 工具可检查您的 Android 项目源文件是否包含潜在错误,以及在正确性、安全性、性能、易用性、便利性和国际化方面是否需要优化改进。

Lint 工具的代码扫描工作流

可以看到源文件(包括Java和XML)、图标、配置文件等,通过 lint.xml 中的问题严重级别配置,然后执行 Lint 命令工具对代码静态扫码。

阅读更多

Android开发中的一些技巧

前言

我们在开发过程中有时候会遇到一些比较棘手的问题,经过不懈搜索后发现原来是这么简单,自己却想的异常复杂,这些知识需要归纳整理起来方便大家使用,所以你有什么好的技巧也分享出来吧。

EditText不自动获取焦点

问题描述:有时候EditText会自动获取焦点,导致软键盘直接跳出。有时候这么做很方便,但是大部分时候我们还是希望在点击EditText的时候软键盘才弹出来。

解决方法:在EditText的父Layout中,加入下面的两个属性。

android:focusable="true"
android:focusableInTouchMode="true"

负dp布局

问题描述:有时候需要做提示小圆点,方式有很多,但是这个方式也是比较简单的一种。

android:layout_marginTop="-3dp"
android:layout_marginRight="-3dp"

运行时忽略

问题描述:很多时候我们在写xml界面的时候需要预览数据,但是数据又不能在实际运行中被显示出来。

在跟布局中添加:

xmlns:tools="http://schemas.android.com/tools"

然后使用 tools: 开头的属性:

tools:text="测试内容"

或者使用 layout_widthlayout_height 来约定适配器item的宽度和高度。

tools:layout_height="370pt"
tools:layout_width="220pt"

还有种情况也很实用,就是使用 showIn 属性将item布局预览展示到某个布局内部。

tools:showIn="@layout/activity_main"

阅读更多

Python实现的图片压缩处理工具

前言

最近在博客中做了一个相册功能,但是问题是我的图片都很大,用图片压缩工具压缩了一遍感觉不是很方便,于是就搜了一下python相关工具,后来发现知乎上的一篇文章《如何用Python智能批量压缩图片》,这里感谢作者提供了思路,短短几行代码实现了图片压缩需求。

最后添加了图片水印功能,可以方便配置图片路径来实现压缩和水印添加,本来打算使用Tkinter来实现一个图片界面方便操作,后来想想还是把精力放在核心逻辑上面吧,其实使用图形界面不见的就很方便,这样修改配置其实更方便些,如果你想实现成图形界面可参考我的另一篇博文《Python两个案例练习》

知识点

内置模块和第三方模块

在python中,一个.py文件就可以理解为一个模块,模块之间可以互相引用。

模块分为三种:自己写的、内置的、第三方的。

内置模块一般存放在安装目录的lib目录下,第三方库一般存放在安装目录的lib\site-packages目录下。第三方库使用前需要提前安装,例如Python操作图像的模块PIL需要提前安装。

阅读更多

发布Android项目到JCenter仓库

注册

为什么将注册单独拿出来说呢?因为这里有两个坑,不要第一步就死翘翘了。

Bintray的基本功能类似于Maven Central,一样的我们需要一个账号,点这里注册,注册前切记两件事情。

Bintray注册界面

  1. 一定要点击右边的For an Open Source Account Sign Up Here而不是左边的绿色按钮。
  2. 不管你选择新注册还是用第三方登录,如果你的邮箱是QQ或者163,都是不行的,建议用google邮箱注册。

再提醒一遍:bintary账号分为普通账号和开源账号,果然点击左边的绿色按钮,你注册的是普通账号,你就必须要加入或者创建组织才可以建立自己的仓库,关键是如果你点错了,你还删不了,非常麻烦。

阅读更多

Linux上使用开源Darktable替代LightRoom

最近再图虫上面上传了几张图片,比较尴尬的是我是 Deepin 系统,不能安装 LightRoom, PhotoShop 此类的图片处理软件,所以就找到了替代品。但是令我欣喜的是,Darktable 对我这种新手还是够用的。

导入

darktable导入图片

Darktable可以从控制台或使用像GNOME或KDE这样的图形shell启动,也可以通过图标启动,我的系统是deepin,可以直接从商店下载安装。

Darktable有两种种模式,一种是lighttable,另一种是darktable。在lighttable模式下,我们可以从文件系统或直接从相机导入照片,管理图片文件和标记照片。

darktable两种模式/></p>

<p>包括jpeg、raw在内的几乎所有图片格式都支持导入和编辑。</p>
                            </p>
                            <p class= 阅读更多

Python做Hexo博客编辑和发布工具

这几天发生了一些意外,我的固态硬盘奇迹般的坏了,上周四倒腾了一天最终还是丢失了很多文件和我之前写的很多工具脚步,后来又忍痛买了一个新的固态盘。这件事让我对文件备份有了新的认识,也是通过这件事我琢磨准备做一个博客自动备份、编辑和发布的工具。

这个是我做的一个雏形,基本上已经能满足我大部分需求了,但是还不足以让大家使用,我慢慢抽时间修改和迭代吧,中间还有一些技术问题现在还未解决。

阅读更多

使用VS Code做Web开发

前段时间尝试了deepin系统,所以目前很多东西都是用VS Code开发,今天尝试用VS Code来做web开发,用到了很多插件,这里分享一下。

HTML Boilerplate插件

通过使用 HTML 模版插件,你就摆脱了为 HTML 新文件重新编写头部和正文标签的苦恼。你只需在空文件中输入 html,并按 Tab 键,即可生成干净的文档结构。

安装方法

打开VS Code,使用快捷键Ctrl + P输入下面文字回车

ext install sidthesloth.html5-boilerplate

常用快捷插入示例

快捷键作用
html + Tab生成html标准头
div + Tab生成div标签
div*10 + Tab生成10个div标签
link + Tab生成link标签

阅读更多

Android Studio3.0依赖方式

Android Studio3.0正式版已经出来了,相比2.x的版本,编译速度提高了不少。 当我们使用AS3.0新建项目时会发现,默认的依赖由之前的compile更改为implementation了。

Android studio版本更新至3.0,更新中,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。

下面我们来看看他们之前的差异:

2.x版本的依赖方式

在com.android.tools.build:gradle 3.0 以下版本依赖在gradle 中的声明写法

compile fileTree(dir: 'libs', include: ['*.jar'])

2.x中支持的依赖方式有:

  • Compile
  • Provided
  • APK
  • Test compile
  • Debug compile
  • Release compile

3.0版本的依赖方式

在3.0后的写法为

implementation fileTree(dir: 'libs', include: ['*.jar'])

api fileTree(dir: 'libs', include: ['*.jar'])

3.0中支持的依赖方式有:

  • API
  • Compile only
  • Runtime only
  • Unit Test implementation
  • Test implementation
  • Debug implementation
  • Release implementation

可以看到在Android studio3.0中,compile依赖关系已被弃用,被implementation和api替代,provided被compile only替代,apk被runtime only替代,剩下的看名字就知道了。

阅读更多

用Momentum美化你的Chrome

美化你的chrome标签页,自动更换壁纸Chrome插件

Momentum chrome插件概述

Momentum插件是一款自动更换壁纸,自带时钟,任务日历和工作清单的chrome浏览器插件。官方的解释就是:替换你 Chrome 浏览器默认的“标签页”。里面的图片全部来自500PX里面的高清图,无广告,无弹窗,非常适合笔记本使用,让装逼再上新台阶。让我来感受下出自细节,触及心灵的美。

Momentum chrome插件

Momentum chrome插件功能介绍

我们知道Chrome 的新标签页默认会显示经常访问的网页,多数情况下会比导航网站靠谱,但是我们是不是会觉得新标签页由于多年没换过,偶尔换个新鲜养眼的也不错?Momentum插件就是能帮助我们解决这个问题的,能给老掉牙的 Chrome 新标签页换个样式,首先添加一个漂亮的风景照,右上角显示当前城市天气,右下角可添加待办事项 Todo 列表,正中间显示系统时间以及今天的主要目标。

  • 华丽的、赏心悦目的图片充满整个Tab页,忘掉Google默认的那个吧!
  • 轻度的任务管理:设置今天的目标,以及查看过往Todo list来巡视完成情况。
  • 时间、所在地天气、格言(英语谚语或来自某经典电影的台词…),合理的排布位置并没有让页面显得臃肿。
  • 当然,常用网址和Chrome应用列表页也保留了。(点击左上角“Links”进入)
  • 浏览器书签便捷管理,在你需要的时候轻松调出书签栏。

设置面板:

设置面板

阅读更多