Android
Fizzzzer
从事Android开发
展开
-
Android屏幕适配之--通过修改系统的屏幕像素比来实现屏幕的适配效果
Android屏幕适配之–通过修改系统的屏幕像素比来实现屏幕的适配效果关于Android中dip,dpi,density,px的详细解释参考简书前辈的文章Android开发中dip,dpi,density,px等详解当然在下面的代码中,density代表的是缩放比,densityDpi代表的是像素密度(就是一个dp中有多少个px),Android官方中是以160为基准dpi做一个简要的说明:...原创 2019-08-30 18:17:43 · 1158 阅读 · 0 评论 -
Android7.0中关于popupWindow的bug解决办法
在Android7.0中由于设置的popupWindow的宽度过大的话,在显示的时候调用showAsDropDown()方法的时候,pop默认是全屏显示的,并不是在指定控件的下方显示,这个时候往往需要调用showAsLocation()方法,但是showAsLocation()方法在Android7.0一下的时候又不会出现在控件的指定位置,所以就会出现问题(PS:笔者是在开发过程中发现的)下面原创 2017-03-16 17:43:28 · 1410 阅读 · 0 评论 -
简单的获取Android手机屏幕的像素
在开发中,有时候需要获取屏幕的像素点,其中一种方法是我下项目中常用的,这里贴出来WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDe原创 2017-02-27 13:54:43 · 998 阅读 · 0 评论 -
Android自定义控件之自定义倒计时按钮
自定义的倒计时按钮应该很多人都做过,我想最常见的实现方式应该就是开启一个子线程,然后通过Handler去更新UI实现,这里我自定义了一个按钮,通过在handler中发送handler的方式,也同样实现了计时器的效果,而且也不需要开子线程,是代码的内存消耗更小更具有操作性实现效果如下直接上代码:package com.fizzer.doraemon.local原创 2016-12-14 16:52:10 · 573 阅读 · 0 评论 -
Android属性动画初探之ObjectAnimator
属性动画ObjectAnimatorObjectAnimator使用它的ofFloat方法,来构造一个属性动画ObjectAnimator.ofFloat(Object target,String propName,float... valuse)参数讲解Object traget: 表示需要执行动画的目标类 String propName: 表示需要变化的属性名称; float values原创 2016-12-12 23:37:12 · 745 阅读 · 0 评论 -
自定义Android中Dialog的弹出动画
在Android开发中需要自定义Dialog,有时候有需要去指定这个dialog的弹出样式,或者是弹出来的动画效果,那这个时候如何去做呢?下面以一个简单的示例作为介绍,方便以后学习,这个效果是模仿的IOS的弹出和消失效果,下面是效果图:其实这个动画效果分解开来很简单,就是一个放大缩小的scale动画和透明的alpha动画一起叠加而来的要做这个很简单,首先要在res目录下新建一个原创 2016-11-07 10:52:44 · 5698 阅读 · 1 评论 -
Android中ListView复用导致布局错乱的解决方案
首先来说一下具体的需求是什么样的:需求如图所示,这里面有ABCD四个选项的题目,当点击A选项,如果A是正确的答案,则变成对勾的图案,如果是错误答案,则变成错误的图案,这里当时在写的时候觉得很简单,只要是在点击的时候判断我点击的选项与正确答案是否一样,是一样就将图片换成正确的样式,如果不一样就换成错误的样式,于是我便写了下面的代码(只贴出了核心Adapter中的代码)packag原创 2016-10-10 23:14:12 · 7140 阅读 · 4 评论 -
Android自定义控件之实现listview滑动时渐隐渐现顶部栏
我在开发的时候遇到了这样的需求,就是在listview的滑动中,需要对顶部的栏目由透明慢慢的变为不透明的状态,就是以下的效果最先开始的时候想的很简单,无非就是监听listview的滑动距离,然后根据距离算出透明度的比值,就可以了,但是事实上呢也的确是这样做的只是在获取listview的滑动距离上可能没法直接获取,需要动态的去计算下面贴出全部代码吧,不想码字了,最近感冒了,脑袋晕原创 2016-09-06 17:16:37 · 2072 阅读 · 0 评论 -
Android自定义控件封装之自定义属性的实现
我们在开发中有时候会遇到一些自定义组合控件,但是希望自己的组合控件能像原生控件那样有些通过XML中的属性来控制,那么就需要我们去自定义属性了1:首先在values/attrs.xml中进行属性的定义 2:在定义好这些属性后,就需要在自己自定义的类中进行获取和操作了public MyAp原创 2016-08-19 11:14:25 · 1001 阅读 · 2 评论 -
Android自定义控件之虚线的用法
Android实现画虚线的方法Android中可以通过DashPathEffect来实现,想知道关于PathEffect的详细用法,请移步PathEffect的详细用法代码示例:PathEffect effects = new DashPathEffect(new float[]{30,10},step);mPaint.setPathEffect(effects);参数说明:float数组中的原创 2017-04-12 17:13:21 · 916 阅读 · 2 评论 -
Android开发中gitignore文件模板添加
Android Studio会自动生成一个模板,但是有时候还是有些文件没办法过滤掉,所以就需要手动的添加,一下是在项目中实际应用到的一个ignore文件,这里贴出来,方便以后粘贴复制使用Built application files *.apk *.ap_ Files for the ART/Dalvik VM *.dex Java class files *.class原创 2017-04-24 08:59:08 · 576 阅读 · 0 评论 -
使用Palette来对图片进行颜色提取
使用Palette来对图片进行颜色提取Palette是Google在5.0中引入的来获取bitmap颜色值的一个工具类,为了兼容以前的版本,所以放在Support v7 Library中,在使用该类之前,需要在gradle中添加引用compile 'com.android.support:palette-v7:25.3.1'使用:Palette是一个调色板,通过传入一个bitmap对象来获取一个颜原创 2017-04-27 14:32:37 · 1409 阅读 · 0 评论 -
Android屏幕适配之--自定义像素的缩放比例来实现屏幕适配
Android屏幕适配之–自定义像素的缩放比例来实现屏幕适配在Android的适配中,可以采用自定义布局的形式,来通过计算像素的缩放比例来实现适配。大致思路就是,通过拿到设备实际的长宽像素值来除以参考设备的长宽值,得到这一个比例值,在设置控件的长宽值得时候,拿到开发者指定的长宽值乘以这个比例值,就能得到控件的实际显示大小了,公式大致如下:scaleX = 设备实际像素值 / 参考设计图的像素值...原创 2019-08-30 18:17:03 · 860 阅读 · 0 评论 -
setContentView是如何把布局加上去的
setContentView是如何把布局加上去的在Android开发中,最常见的代码就是setContentView,然后传入你写的布局ID,那么布局就被加载到界面中了,系统究竟是怎么被加到界面中的,就需要通过源码来查看了。点击setContentView方法,进去会发现调用了以下的代码public void setContentView(@LayoutRes int layoutResID...原创 2019-08-07 17:29:10 · 213 阅读 · 0 评论 -
Paint方法总结(三):图层混合模式
Paint方法总结(三):图层混合模式参考扔物线大神博客离屏绘制在介绍图层混合模式之前先简单的说一下Android的离屏绘制。离屏绘制就是图层绘制的一种缓冲策略,通过canvas.saveLayer()将缓冲层保存起来,这个saveLayer会返回一个layerID,把图层先绘制在缓冲层,然后通过canvas.restoreToCount(layerId)恢复图层,将缓冲层的图像绘制在画布上...原创 2019-08-09 16:27:03 · 876 阅读 · 0 评论 -
Paint方法总结(二):着色渲染器Shader
Paint方法总结(二):着色渲染器ShadersetShader(Shader shader):设置着色器,对图层进行渲染,Shader一共有五个子类1、LinearGradient 线性渲染器 /** * Create a shader that draws a linear gradient along a line. * * @param x0 T...原创 2019-08-08 23:51:43 · 323 阅读 · 0 评论 -
Paint的方法总结(一):基本常用Api
Paint的方法总结(一):基本常用Apivoid setColor(int color): 设置颜色void setARGB(int a,int r,int g,int b): ARGB颜色,范围0-255;void setAlpha(int alpha):设置透明度,范围为0-255;void setAntialias(boolean aa):设置抗锯齿void setStyle(S...原创 2019-08-08 18:14:45 · 861 阅读 · 0 评论 -
Fragment+ViewPager+ButterKnife时控件会报空指针问题
Fragment+ViewPager+ButterKnife时控件会报空指针问题首先聊一下ViewPager+Fragment的机制吧,ViewPager在滑动的时候会缓存前后面各一个fragment,也就是说,一共是三个fragment在内存中,而如果滑动的过多的话,与视图fragment距离超过1的fragment就会被回收掉。那接下来再聊一下ButterKnife在fragment中的绑...原创 2019-05-30 11:21:23 · 1084 阅读 · 0 评论 -
Android Gradle配置构建
Android Gradle配置构建使用gradle构建不同的应用名和图标详情可以参考学习链接 文章链接对于manifest中字段,可以在gradle中通过manifestPlaceholders来进行配置,具体的写法manifestPlaceholders=[key:value] 例如我想在debug版本和release版本通过appname和icon进行区分的话可以在buildType...原创 2018-12-13 16:14:22 · 180 阅读 · 0 评论 -
保存Drawable资源为Bitmap文件
保存Drawable资源为bitmap文件在实际开发中有时候会需要保存项目的drawable文件为bitmap文件下面的代码是网上能找到的public Bitmap convertViewToBitmap(View view){ view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bitmap原创 2017-06-12 15:35:33 · 564 阅读 · 0 评论 -
ViewPager中添加Fragment的方法实现
有时候我们在使用ViewPager的时候可以向里面加入一个自定义的view,也可以加入一个Fragment,那如何加入Fragement创建一个Viewpager的适配器,然后需要继承FragementPagerAdapter类,在该类中,需要创建一个构造方法,实现getItem和getCount两个方法,当然如果还需要更多的扩展的话,还可以实现里面别的方法;具体代码实现:原创 2016-03-25 17:53:53 · 3294 阅读 · 0 评论 -
Android中关于键盘的处理
强制关闭键盘InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);开启软键盘InputMethodManager imm = (原创 2016-01-26 19:21:33 · 485 阅读 · 0 评论 -
Android框架之EventBus的简单使用
EventBus是一款针对Android优化的发布/订阅事件总线,主要功能是代替Intent,BroadCast在Fragment,Activity,Service,线程之间传递消息,优点是开销小,代码更优雅,以及发送者和接受者的解耦EventBus的使用:1:EventBus在发送消息的时候需要一个实体类,这个类可以是一个空类,也可以是里面有数据的类,尽量在使用的时候在实体类中添原创 2015-10-27 18:12:15 · 566 阅读 · 0 评论 -
Android基础之图片的压缩算法
安卓中对图片的压缩有三种常见的方法第一:图片的质量压缩法private Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); image.compress(Bitmap.CompressFormat.JPEG, 100, ba原创 2015-10-27 17:08:35 · 435 阅读 · 0 评论 -
Android的ImageView中scaleType属性值的详解
1.SetScaleType(ImageView.ScaleType.CENTER)按图片原来的size大小来居中显示,当图片的长/宽大于控件的长/宽的时候,截取图片的中间部位显示2. SetScaleType(ImageView.ScaleType.CENTER_CROP);按比例对图片进行扩大显示,使图片的长/宽等于或者大于控件的长/宽且居中显示3. set原创 2015-11-11 10:52:42 · 459 阅读 · 0 评论 -
Android事件分发机制(一)
Android下与Touch事件相关的方法有三个dispatchTouchEvent(),onInterceptTouchEvent()和onTouchEvent(),能够对这三个方法进行响应的控件包括ViewGroup,View和Activity。其中ViewGroup和View对Touch事件的三个方法均能响应,Activity对onInterceptTouchEvent()不能做出响应,当然原创 2015-11-10 14:35:19 · 391 阅读 · 0 评论 -
Android基础之Intent的几种常用方法
调用拨号程序 给10086的妹子打电话Uri uri = Uri.parse("tel:10086");Intent intent = new Intent(Intent.ACTION_DIAL, uri);startActivity(intent);发送短信或者彩信 给10086发送内容为hello的短信Uri uri =原创 2015-10-22 12:26:38 · 496 阅读 · 0 评论 -
Android自定义动画之实现3D翻转的动画
在安卓的开发中,有时候会遇到需要3D翻转的动画,我在这次项目的开发中也遇到了,效果实现了,但是最终没有采用,于是写篇博客,方便于以后使用‘下面是效果图:下面贴出来的是一个自定义的封装好的3D动画实现类,在以后的项目中是可以直接使用的package com.renruihr.www.doraemon;import android.graphics.Camera;原创 2015-10-20 17:28:39 · 767 阅读 · 0 评论 -
Android自定义控件之app标题栏的封装
在app的开发中,每一个页面都有上面的标题栏,总不能在开发的过程中没个界面都写一个标题栏的布局,所以为了开发的方便,将该标题栏进行的封装,以后在实际的开发工作中,也可以将该封装好的标题栏控件直接拿来使用,当然肯定是需要更改里面的布局文件的下面贴出的是布局文件<RelativeLayout xmlns:android="http://schemas.android.com/原创 2015-10-20 12:35:48 · 1804 阅读 · 2 评论 -
Android自定义控件之自定义Toast
在实际开发中经常会给用户弹出相应的通知信息,可能有的弹出通知的界面会跟系统自带的界面有很大的差别,这个时候就需要开发者自己定义Toast的布局了我在项目中也遇到了自定义Toast的需求,所以就将他封装了起来,方便以后继续使用下面贴出的是自定义Toast的布局,可根据实际的要求更换布局<LinearLayout xmlns:android="http://schemas.andro原创 2015-10-20 14:51:25 · 433 阅读 · 0 评论 -
Android基础之AutoCompleteTextView的使用
AutoCompleteTextView可以被认为是一种特殊的EditText,用户在AutoCompleteTextView中输入字符的时候,就会得到和该输入字符匹配的列表,该列表事先由开发人员指定,用户只需要选择其中一直即可,这样可以节省用户输入的字符数,同时也可以减少出错的机会,接下来就贴出一个AutoCompleteTextView的简单的demo实现AutoCompleteT原创 2015-10-27 17:58:22 · 424 阅读 · 0 评论 -
Android中Activity出现与退出的自定义动画
由于安卓系统开源的原因,很多厂家都重写了activity的出现和退出的样式,有些时候为了开发的需要,需要某些activity呈现一定的出现样式,这个时候就需要开发者自己去自定义样式了自定义Activity的进入和退出效果有两种方法:一种是通过代码的方式MainActivity.this.overridePendingTransition(enterAnim,exitAnim)其原创 2015-10-28 18:45:41 · 2023 阅读 · 0 评论 -
Android中判断用户多次连续点击
在实际开发中有时候会要去判断用户是否在多次的连续点击某个按钮,效果类似于安卓手机中用户连续的点击系统版本会调出开发者模式一样private void clickStyle(){ if (time == 0) { time = System.currentTimeMillis(); clickCounts = 0; } else { if (System.currentTi原创 2015-10-29 18:25:00 · 3348 阅读 · 1 评论 -
拍照后旋转图片
笔者在开发中有遇到过这样的问题,就是在三星 note4手机上拍照,发现图片是自动旋转90度的,导致最后上传的图片是旋转的,为了解决这个问题,我们就需要先获取图片的旋转度信息,然后再将图片按照一定的角度旋转过来,最后上传以达到我们想要的效果获取图片的旋转度 /** * 获取图片的旋转度 * * @param path 图片的路径 * @retur原创 2016-02-17 15:28:30 · 549 阅读 · 0 评论 -
如何使用DDMS读取data/data目录下的文件
1:首先找到sdk/platform-tools的路径,并打开命令窗口,进入到该目录下2:依次键入一下命令 adb shell su -c "chmod 777 /data"adb shell su -c "chmod 777 /data/data"这时就可以了原创 2016-02-16 16:19:54 · 1599 阅读 · 0 评论 -
Android中保存网络图片到SD卡
/** * 下载闪屏页的图片 */ private void loadFirstImage(final String url) { /** * 在子线程中开启下载图片的任务 */ new Thread(new Runnable() { @Override原创 2016-02-15 16:24:12 · 428 阅读 · 0 评论 -
ScrollView中嵌套ListView的完美解决方案
在ScrollView中嵌套ListView的时候往往会出现滑动事件导致冲突而使ListView显示不全的问题,而这个问题网上百度会得到一个很普遍的答案,就是重新计算ListView的高度,然后再讲其高度重新赋值给ListView,下面贴出代码解决方案:/*** 动态设置ListView的高度* @param listView*/public static void setListVi原创 2015-12-26 08:11:22 · 582 阅读 · 0 评论 -
仿微信朋友圈图片按下效果
在玩微信朋友圈时,发现每个图片的按下后,图片都会有一个变暗的效果,当时一想,做个selector应该就可以了,可是你每一张图片都是服务器拉取的,怎么去做selector,那在按下的时候我给每一张图片都加一个蒙层呢,是不是也可以解决,可是这个办法也太低端了。有什么别的办法吗?我直接去操作图片,让图片的颜色变暗就行了·····自定义了一个图片的控件,别的不说 贴代码:package com.原创 2015-12-25 11:24:25 · 972 阅读 · 0 评论 -
拍照保存
在多媒体应用制作中,我们经常会用到camera,那么到底如何调用系统的camera呢:1.调用相机: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, 1);只需要把这两句代码写进button的on原创 2016-01-22 14:51:12 · 359 阅读 · 0 评论 -
Android中Text文本特效处理
tvShowHistory.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//设置下划线tvShowHistory.getPaint().setAntiAlias(true); // 设置抗锯齿挺实用的,做个记号原创 2015-11-18 11:16:35 · 525 阅读 · 0 评论