Android
文章平均质量分 61
danfengw
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
脱糖与DX、D8、R8
脱糖脱糖含义:lamdal表达式在打包构建期间被转换成内部类的形式,这个过程叫脱糖(java编译时不会这样)。为了让我们能使用上Java 8的特性,Google使用Transformation来增加了一步编译过程 →脱糖(desugaring)。脱糖实现的大概发展历程如下:D8D8作用:脱糖 + 将.class字节码转换成dexR8整合了Proguard和D8 ,减少了一个编译步骤,同时保留了字节码优化能力两者关系1、ProGuard→ 压缩、优化和混淆Java字节码文件的免费工具,开源原创 2022-03-24 16:17:25 · 1456 阅读 · 0 评论 -
Android apt 遇到问题的例子
这篇apt 的Demo 是为了解释我在编写apt 代码时遇到的一个问题。简单写一下步骤,解释下遇到的问题。 as 版本:4.1.1 (版本不同配置上可能会有所不同)前言这里就简单仿照ButterKnife写个BindV的注解。先看下最终的使用class MainActivity : AppCompatActivity() { @BindV(R.id.tv) // 1 注解 lateinit var tv: TextView; override fun onCreate(sa原创 2021-01-07 11:51:14 · 795 阅读 · 0 评论 -
Android apt被注解为Kotlin写的代码时不能自动生成文件bug
记录一下自己遇到的问题, 写了个类似Butterknife,通过注解可以自动生成代码的逻辑,但是在运行的时候发现并没有生成相关文件。具体解释一下,(1)自己写了一个类似ButterKnife可以在编译时生成对应文件的apt(Annotation processor tool 注解处理器)(2)注解在一个Kt文件上,编译后没有自动生成对应的文件,但是注解在java文件上就可以生成对应的文件。Demo 链接原因:涉及到注解的注解处理器依赖也会由annotationProcessor替换成kapt解原创 2021-01-07 11:50:45 · 1607 阅读 · 1 评论 -
mac adb配置 及zsh 配置
mac下配置adb(1)打开你的as找到你的sdk的位置(2)打开终端,通过cd +/Users/wangdanfeng/Library/Android/sdk进入sdk目录下,再cd 到platform-tools 目录下(3)运行下面两行命令touch .bash_profileopen .bash_profile在文档中添加下面两行export PATH=${PATH}:...原创 2019-10-30 18:30:41 · 1552 阅读 · 0 评论 -
Android : GestureDetector手势检测
关于Android的手势检测方面,刚开始的时候感觉自己还有点误区,认为onTouchEvent方法中的ACTION_DOWN、ACTION_UP、ACTION_MOVE也算是手势,实际上Android中的手势检测还是有区别的,onTouchEvent方法中只是进行了手指落下、抬起、滑动过程的检测,不算是一个连续的动作,这样像我们平时的长按事件、快速滑动、拖动事件的检测,如果是我们自己写代码去实现会变原创 2015-09-24 17:35:19 · 1912 阅读 · 1 评论 -
Android 酷炫来袭:制作属于你自己的音频播放器(综合运用MediaPlayer、Service、Broadcast、ListView、SeekBar)
今天制作了一个属于自己的音乐播放器感觉还不错,分享出来,希望能够帮助大家。感觉知识点挺多的,也挺使用的,大大提高了个人兴趣,哈哈,我是程序员啊程序员。 为了有所侧重,我将注意点和学习点放在文章的最开篇。一、学习重点与注意点1、Mediaplayer的生命周期、相关方法及其使用 2、如何自定义SeekBar 3、接收广播的动态注册与注销 4、获取文件路径 5、获取歌曲的名称、作者名、图原创 2015-09-10 22:25:33 · 3240 阅读 · 0 评论 -
Android 项目(一):项目流程
一、需求分析在开发一款App之前必须做好市场分析 需求文档 设计(草图,前期设计,标准的头像) 准备工作:数据库设计(是否需要登录、是否存储、缓存 【product 的数据库 一般会有一个id name price等】)+接口设计(也就是思维导图) 代码(init 也就是数据库增删改查 SQLiteOpenHelper+网络链接volley xutils finalhttp 创建一个c原创 2015-10-18 12:35:52 · 1309 阅读 · 1 评论 -
Android —页面下拉刷新(ListView与SwipeRefreshLayout)
相信大家在使用淘宝的时候应该都看到过下拉刷新的效果。这种效果看起来会感觉比较难做,一起来看下下拉刷新。ListView 思路: 通过FrameLayout底层为下拉刷新的Header,上面一层是ListView,监听手指滑动设置动画效果,移动ListView。 使用: 1、编写ListView顶部下拉刷新的header<?xml version="1.0" encoding="utf-8"?原创 2015-09-25 22:36:24 · 1991 阅读 · 0 评论 -
Android Studio :no debuggable application 解决方案
点击tools——Android——Enable ADB Integration再运行一次就就可以了原创 2015-10-08 08:53:32 · 2330 阅读 · 0 评论 -
Android (项目一)xListView 的使用及ProgressBar样式修改
前几天做项目有个下拉刷新,效果是上面图片展示的,一开始感觉应该挺难做的因为下拉刷新的时候有个图片会进行180度旋转,而且松手后是一个ProgressBar,感觉很纠结,是要自己写吗?自己写出也太麻烦了。后来才发现原来这个下拉刷新是有开源项目可以利用的,那就是xListView。所有的新东西都是一样的,由于我们对它的不熟悉会感觉使用起来特别的困难,而xListView的使用上,在GitHub上面介绍原创 2015-10-21 10:05:37 · 1262 阅读 · 0 评论 -
Android 效率开发之EventBus新使用方法
最近学习EventBus的使用时发现关于EventBus的使用好多还都是以前的使用方法,然而EventBus的使用早已不同了,下面链接的这篇文章中介绍了EventBus的新用法,可以作为参考与借鉴 Android–>EventBus 3.0新版使用说明(及其使用方法) ,今天写的小Demo作为分享。EventBus介绍 EventBus 可以简单的理解为传递消息,EventBus实现了对程序组件的原创 2015-11-08 16:13:15 · 1999 阅读 · 1 评论 -
Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultG
GitHub上有许多开源项目,在使用时可能会出现 Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.deployer.DefaultGroovyMavenDeployer 这样的问题,这种问题大多出现在开源项目的gradle的applay from上面。 解决方案: 删除app原创 2015-10-09 15:15:47 · 4048 阅读 · 1 评论 -
Android 项目(一):网络请求封装(一)
单独的使用网络连接相信大家都一看就懂,一看就会,但是在实际项目中感觉然并卵啊!我们不可能在每个需要网络请求的界面都写个网络请求,那样不仅代码量增多且重复,因此要想个办法将所有的网络请求提取出来,每当有页面需要网络请求就调用同一个方法,方便简洁。一、网络连接方法关于网络连接可以使用volley也可以使用HTTPUtils的网络连接方式。 思路: 1、编写MyHttp.class用于网原创 2015-10-12 14:21:07 · 1383 阅读 · 0 评论 -
Android 多媒体应用:MediaRecorder 录制音视频 之 音频
一、MediaRecord简单介绍 手机为我们提供了麦克风硬件,我们可以通过麦克风实现音频的录制。这里Android为我们提供了MedioRecorder来录制音频与视频。下图就是MediaRecorder的状态转换图。 音频状态转换 reset()–setAudioSource()设置声音来源MIC–setOutputFormat()设置所录制的音频文件的格式–setAudioEncod原创 2015-09-15 14:51:57 · 1352 阅读 · 0 评论 -
Android 浏览网页:WebView 嵌入浏览器(浏览历史返回、自定义加载失败界面、支持缩放、获取标题栏)
一、WebView简介 在 Android 手机中内置了一款高性能 webkit 内核浏览器,在 SDK 中封装为一个叫做 WebView 组件.我们可以通过对它的美化和包装在自己的应用程序里嵌入一个浏览器。二、WebView在应用中加载网页的简单用法WebView的用法实际上非常简单,只需要两步。 1、首先我们在xml布局中添加WebView。xml文件<WebView a原创 2015-09-11 10:27:43 · 3226 阅读 · 0 评论 -
Android UI设计(引导界面):ViewPager之界面添加底部圆点与循环显示
添加底部圆点一、方案一(通过自定义shape) 在布局中直接添加View对象,并设置background为未选中的shape。布局:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" androi原创 2015-09-04 22:36:55 · 1639 阅读 · 1 评论 -
Android UI设计:DatePickerDialog与TimePickerDialog
DatePickerDialog(设置日期)全局变量mcalender = Calendar.getInstance();使用(new+show) DatePickerDialog dialog = new DatePickerDialog( MainActivity.this, new OnDateSetListener() {原创 2015-08-28 22:03:54 · 1194 阅读 · 0 评论 -
Android UI设计:自定义Dialog
一、自定义Dialog的布局样式经过之前对AlertDialog的学习,掌握了AlertDialog的基本用法,了解了AlertDialog的样式与布局,现在来自己创建一个属于自己样式的Dialog。 首先根据AlertDialog的样式我们先进行对自己自定义的Dialog样式进行布局,之后再进行引入调用。1、基本布局布局方面我们可以知道,需要有标题栏、内容文本、取消与确定按原创 2015-08-28 19:53:08 · 1300 阅读 · 0 评论 -
Android UI设计:Spinner
Spinner的使用Spinner用于有下拉选框的界面,效果如下。 Spinner的使用方法与AutoCompleteTextView的使用方法相似 1、在layout中加控件。 2、在activity中加ArrayAdapter使用。1、layout<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr原创 2015-08-26 14:10:58 · 1125 阅读 · 0 评论 -
Android 图片特效处理:drawBitmapMesh——图像扭曲+动感
最近学了好多绘图啊,图片处理啊之类的,想着学全面一点,就又研究了一下drawBitmapMesh,drawBitmapMesh也是在Canvas画布上进行使用的,它具有能够使图片扭曲变形的效果,感觉有点像哈哈镜,只不过哈哈镜是直接照出来的效果,而drawBitmapMesh是通过改变它所有点的坐标位置改变图像的。drawBitmapMesh核心原理 我们使用drawBitmapMesh是通过这行代原创 2015-09-20 17:31:01 · 8708 阅读 · 2 评论 -
Android 属性动画(二):ObjectAnimator与ValueAnimator
一、ObjectAnimator ObjectAnimator继承于ValueAnimator,实现了对ValueAnimator的进一步封装,因此使用方便、简单,它允许程序员对指定对象的属性执行动画。静态使用ObjectAnimator 所谓的静态使用ObjectAnimator实际上就跟我们的四种基本属性动画的静态使用一样,编写xml文件。 1、在res文件下创建animator文件夹,将原创 2015-09-20 12:35:07 · 1958 阅读 · 0 评论 -
Android 动画效果(二):四种基础动画的 **动态设置、动画监听、组合动画
本篇博客是承接上次的 Android 动画效果(一): 四种动画基础(Alpha、Translate、Rotate、Scale) 进行编写的。这里介绍的只不过是四种基础动画的动态设置、以及它的动画监听(setAnimationListener)、组合动画(AnimationSet)。 学习点: 动画的动态使用 动画监听 动画组合 在这篇博客中我将对动画的设置做一个更加详细的介绍。一、Alp原创 2015-09-19 11:58:36 · 5012 阅读 · 0 评论 -
Android 图片特效处理:Shader着色器、渲染
在绘图中还有一种比较重要的可以设置画笔风格的属性叫做Shader,Shader被称为着色器或是渲染。一、Shader简介Shader被称为着色器或是渲染,Shader有几个直接子类:BitmapShader : 主要用来渲染图像LinearGradient :用来进行线性渲染RadialGradient : 用来进行环形渲染SweepGradient : 扫描渐变—围绕一个中心点扫描原创 2015-09-19 07:56:56 · 1584 阅读 · 0 评论 -
Android 图片特效处理:Bipmapshader位图渲染器(CLAMP 、REPEAT 、MIRROR 区别)
(X轴Mirror镜像,Y轴Repeat重复) 本篇博客是承接 Android 图片特效处理:Shader着色器、渲染 博客,对Shader的几种子类做进一步介绍,看下他们的各自的效果。 在上次的博客中根据API可以知道BitmapShader有三种Mode,但是并未给出具体的实例,这里对BitmapShader的三种Mode区别一下,看下他们分别的效果。一、CLAMP(拉伸)1、要使用原创 2015-09-19 07:13:08 · 3068 阅读 · 0 评论 -
Android 绘图进阶(三):Xfermode绘制图片的保存
本篇博客是承接上一篇Android 绘图进阶(二):Xfermode绘制涂层博客继续写进行的。在上次的内容中我们事先了一种涂层的效果,可以使用手指滑动,显露底层的背景图片,如果绘制的图片我们想要进行保存,就好像我们平时上传图片,将不想被别人看到的信息进行马赛克,之后需要进行图片的保存再上传到网络上面,那么我们要怎样实现呢? 首先在布局中添加一个Button用于保存图片,之后我们通过对Butto原创 2015-09-18 22:05:43 · 1229 阅读 · 2 评论 -
Android 绘图进阶(二):Xfermode(画笔风格)绘制涂层
如果你对PorterDuff与Xfermode不够了解可以参看我之前的博客Android 绘图进阶(一),上篇博客介绍了Xfermode的SRC_IN的画笔风格的使用实例,这篇博客介绍一下它的一种涂层效果(XOR)。方案一:圆形画板擦一、思路 根据graphic图我们可以使用看出Xor效果实现的就是相交部分会露出底部图片。因此我们需要设置一个底部的背景(BitmapBackground),我是原创 2015-09-18 10:05:33 · 1842 阅读 · 0 评论 -
Android 绘图基础:Bitmap(位图)与Matrix(矩阵)实现图片5种操作(平移、旋转、错切、缩放、对称)
Android的Matrix利用数学原理实现图片平移、旋转等操作详解 很庆幸自己的线性代数学的还可以,理解Matrix的矩阵变换完全没有问题。Matrix矩阵实现图片的平移旋转等操作涉及到线性代数问题,感兴趣它的具体实现的话可以参考一下上面的博客,非常详细,非常好。如果不想深究也可以简单的理解为BitMap的像素点通过某种方式(Matrix)移动了相应的位置,这样就实现了图片的变换。不管怎样,原创 2015-09-17 22:27:11 · 9014 阅读 · 2 评论 -
Android UI设计的三种常见布局(LinearLayout、RelativeLayout、FrameLayout)
目录***LinearLayout ***RelativeLayout ***FrameLayoutLinearLayout(线性布局)LinearLayout又称作线性布局,是一种非常常用的布局。 属性: android:orientation该属性指定了排列方向,可以是vertical(垂直排列),也可以是horizontal(水平排列)。 match_parent:表示与父元素宽原创 2015-08-18 21:33:48 · 6862 阅读 · 0 评论 -
Android 绘图基础:Path(绘制三角形、贝塞尔曲线、正余弦)
学习重点: 理解path的使用 理解贝塞尔曲线的绘制原理 可动正余弦的绘制Path的简单介绍 在 Android 绘图基础:Canvas画布——自定义View(绘制表盘、矩形、圆形、弧、渐变) 中我们可以看到Canvas的强大功能,其实Canvas还有一种绘图方式就是drawpath(),没有在上篇博客中写出这个方法就是想进行单独的介绍。我们通过Canvas 的其他方法只能绘制特定的图形,但原创 2015-09-17 21:33:51 · 13465 阅读 · 1 评论 -
Android 图片压缩(建议采用下面的方式而不是compress)
在调用系统摄像机中我们使用过图片压缩的方式,由于手机自身的原因可能不支持过大图片的显示,需要对图片进行压缩,方法比较重要因此这里将代码提取出来作为重点。 不建议使用bitmap的compress方法是因为compress方法会对像素点进行压缩,比如 001的就压缩为000了,多次调用容易使得图片最终变得十分模糊。 //下面的方法是google发布的图片压缩的方法//有的手机对显示的图片不原创 2015-09-17 14:07:09 · 3369 阅读 · 0 评论 -
Android 多媒体应用:从相册选择照片显示(解决相册中图片显示不出来的问题)
这篇博客是补充之前写的调用系统摄像机拍照,也算是比较重要就单独拿出来了,我们看到的许多应用不仅可以调用摄像机也可以直接从图片中进行选择,因此我们应该给予用户更好的选择与体验,因此学会怎样从相册中选择图片进行显示也是非常必要的。 从系统中调用图片进行显示在ImageView中。从相册中选择照片使用步骤很简单,跟开启相机差不多,都需要一个Intent,设置Intent的action操作,然后sta原创 2015-09-16 14:05:45 · 5763 阅读 · 0 评论 -
Android 多媒体应用:调用摄像头拍照
在实际的应用程序里会看到有调用摄像头拍照的功能的实现,比如我们的原创 2015-09-16 09:08:45 · 1562 阅读 · 0 评论 -
Android 多媒体应用:视频播放之Vitamio
学习了VideoView和SurfaceView之后感觉虽然videoView使用挺方便的但是它毕竟只能播放mp4和3gp格式的视频,不够适用,就想再多了解一下其他的可以播放视频的控件,从而了解到了一个第三方播放视频的类库就是Vitamio。一Vitamio介绍 这里对Vitamio做一个简短的介绍,相信大家应该听说过FFMPEG,FFMPEG也是一个第三方的库,它的底层是用C语言进行编原创 2015-09-15 20:42:42 · 1130 阅读 · 0 评论 -
Android 多媒体应用:视频播放之VideoView与SurfaceView
实际上我们这里所说的VideoView与SurfaceView并不适用于我们真正的实际开发中,那么我们为什么还要学习他们呢?在实际开发中我们又该使用什么呢?一、为什么要学习VideoView与SurfaceView 在思考为什么学习VideoView与SurfaceView之前,先想一下为什么不适合实际开发,这是因为VideoView并不是支持播放所有格式的视频,它仅支持mp4和3gp格式的文件。原创 2015-09-15 16:49:57 · 4216 阅读 · 2 评论 -
Android 多媒体:SoundPool—简短小音效
一、SoundPool介绍 我们之前有用过MediaPlayer进行播放音频文件,但是当我们的应用程序需要经常的播放密集、短促的音效时,调用MediaPlayer则会占用系统的大量资源,且延时时间较长,不支持多个音频同时播放。这种简单的音乐的播放就运用到了我们的SoundPool,它使用音效池的概念来管理短促的音效,例如它可以开始就加载20 个音效,通过他们的id进行管理与播放。SoundPool原创 2015-09-15 11:47:16 · 1099 阅读 · 0 评论 -
Android DbUtils之查询数据库
一、DbUtils简介DbUtils是xUtils中模块之一,可以用于对数据库进行相关操作。下面是我从官网摘录过来的关于它的描述。 DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支持事务,默认关闭; 可通过注解自定义表名,列名,外键,唯一性约束,NOT NULL约束,CHECK约束等(需要混淆的时候请注解表名和列名); 支持绑定外键原创 2015-09-14 21:44:50 · 1999 阅读 · 0 评论 -
Android 网络连接:HttpUtils 的GET、POST与注解
最近几天学习了好多种网络连接的方式,为了更好地区分他们,这里简单说明一下,所有的网络连接都是基于我们的TCP/IP模式进行的,从开始的URLConnection到HttpUrlconnection、HttpClient、Volley、HttpUtils全部都是。其中HttpUrlconnection、HttpClient是apache推出的封装类,但是二者在Android上不很适合,goole之后就原创 2015-09-14 16:53:29 · 5549 阅读 · 1 评论 -
Android 网络连接:Volley(齐射)之ImageRequest与NetworkImageView网络图片下载
一、ImageRequest 不知道将ImageRequest放在这里进行介绍是否合适,因为毕竟它属于一个请求队列,与StringRequest、JsonRequest、JsonArrayRequest请求差不多,前面的三种都是用于请求文本类型的,而ImageRequest是请求的图片,但是同样的他们太都离不开RequestQueue,都必须添加到请求队列中。1、1使用步骤(1)在布局文件中添加I原创 2015-09-14 12:20:05 · 1345 阅读 · 0 评论 -
Android 网络连接:Volley(齐射)之简单使用
一、Volley简介 实现网络连接的方式有很多,如HttpURLConnection、HttpClient但是这二者都是apache推出的,在android中并不非常实用,而且我想google一定也很想有属于自己的网络请求方式而不是借用别人的。终于Google I/O 2013上,Volley发布了。Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮。 Volley原创 2015-09-14 12:14:58 · 1154 阅读 · 0 评论 -
Android :(使用fragment碎片)——让你的应用更灵活(二)数据通信
Fragment的三种通信fragment之间的通信包含了fragment之间的通信,Activity——>frament的通信以及fragment—>Activity的数据通信。这三种通信中第三个比较难,不论简单还难先说下思路吧。思路:1、fragment1——fragment2:在fragment1 中写一个公共的方法来获得我们需要的数据,将得到的数据再fragment2 中进行调用或使**用。原创 2015-09-12 19:54:35 · 1189 阅读 · 0 评论
分享