自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Activity扩散动画 揭露动画

1:从点击的位置向外扩散 揭露2:收回到点击的位置3:如果点击的位置是可变动的(例如悬浮球) view 会收回到悬浮球最后所在位置从而达到更好的用户体验和视觉效果//首先准备一个获取点击view在屏幕中的中心点坐标和 扩散动画的工具类 话不多说 直接上代码import android.animation.Animator;import android.app.Activity;import android.content.Intent;import android.os.Build;im

2020-08-31 09:49:20 328

原创 Glide系列-圆角、毛玻璃、动画、gif、缓存、尺寸、占位图、生命周期等

Glide相关属性环境配置添加依赖compile ‘com.github.bumptech.glide:glide:3.7.0’添加网络权限 <uses-permission android:name="android.permission.INTERNET"/>先上一张网络图片链接http://sshnews-test.oss-cn-beijing.aliyuncs.com/epg/2020/05/10/03/f0fae539f41f416c9471fa1db57590f5.j

2020-08-06 18:03:02 523

原创 谈一谈View的事件分发机制?

参考回答:事件分发本质:就是对MotionEvent事件分发的过程。即当一个MotionEvent产生了以后,系统需要将这个点击事件传递到一个具体的View上。点击事件的传递顺序:Activity(Window) -&gt; ViewGroup -&gt; View三个主要方法:dispatchTouchEvent:进行事件的分发(传递)。返回值是 boolean类型,受当前onTou...

2019-02-20 16:13:15 335

原创 Scroller中最重要的两个方法是什么?主要目的是?

参考回答:Scroller实现滑动的具体过程:在MotionEvent.ACTION_UP事件触发时调用startScroll()方法,该方法并没有进行实际的滑动操作,而是记录滑动相关量马上调用invalidate/postInvalidate()方法,请求View重绘,导致View.draw方法被执行紧接着会调用View.computeScroll()方法,此方法是空实现,需要自己处理逻...

2019-02-20 16:10:24 574

原创 scrollTo()和scrollBy()的区别?

参考回答:scrollBy内部调用了scrollTo,它是基于当前位置的相对滑动;而scrollTo是绝对滑动,因此如果利用相同输入参数多次调用scrollTo()方法,由于View初始位置是不变只会出现一次View滚动的效果而不是多次。引申:两者都只能对view内容进行滑动,而不能使view本身滑动,且非平滑,可使用Scroller有过渡滑动的效果...

2019-02-20 16:02:47 2330

原创 MotionEvent是什么?包含几种事件?什么条件下会产生?

参考回答:MotionEvent是手指触摸屏幕产生的一系列事件。包含的事件有:ACTION_DOWN:手指刚接触屏幕ACTION_MOVE:手指在屏幕上滑动ACTION_UP:手指在屏幕上松开的一瞬间ACTION_CANCEL:手指保持按下操作,并从当前控件转移到外层控件时会触发...

2019-02-20 15:58:29 2057

原创 了解哪些Drawable?

参考回答:BitmapDrawable表示一张图片NinePatchDrawable可自动地根据所需的宽/高对图片进行相应的缩放并保证不失真 .9图 聊天的气泡ShapeDrawable表示纯色、有渐变效果的基础几何图形StateListDrawable表示一个Drawable的集合且每个Drawable对应着View的一种状态LayerDrawable可通过将不同的Drawable放...

2019-02-20 15:55:41 274

原创 dp、dpi、px的区别?

参考回答:px:像素,如分辨率1920x1080表示高为1920个像素、宽为1080个像素dpi:每英寸的像素点,如分辨率为1920x1080的手机尺寸为5英寸,则该手机DPI为(1920x1920+ 1080x1080)½/5dp:密度无关像素,是个相对值...

2019-02-20 15:51:51 11927

原创 res目录和assets目录的区别?

参考回答:res/raw中的文件会被映射到R.java文件中,访问时可以使用资源Id 不可以有目录结构assets文件夹下的文件不会被映射到R.java中,访问时需要AssetManager类,可以创建子文件夹...

2019-02-20 15:47:09 1448

转载 图解android事件分发机制

在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的博文...

2019-02-14 11:21:12 2173

原创 倒计时

/** * 计时器 */private class TimeCount extends CountDownTimer { public TimeCount(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Overr...

2019-01-30 13:57:39 253

原创 生成二维码

现在二维码可谓是火热 基本上任何一个app都会用到 那如何生成二维码呢?下面是我项目中用到的一个生成二维码的放法 在此记录 行日后方便。 /** * 生成二维码 * @param text 文字或网址 * @param size 生成二维码的大小 * @return bitmap */ public static Bitmap crea...

2019-01-30 12:43:02 320

原创 红包随机分

指定红包的总金额指定红包的总个数指定最小红包金额指定最大红包金额import com.common.utils.LogUtils;import java.text.DecimalFormat;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util....

2019-01-28 14:23:12 498 1

原创 点击空白处,键盘销毁

在仿照微信红包开发留言功能的时候用到这个需求 其实我们在项目中很多地方都存在这样的需求 所以在此记录一下。方便自己 也方便他人@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = ge...

2019-01-28 14:12:40 200

原创 EvenBus通信

今天主要记录一下EventBus。leading actor EventBus (主角EventBus)前言我们在开发过程中,都会有刷新UI的需要 一般都是在子线程中进行耗时操作 通知给主线程刷新UI 用的最多的就是在子线程中进行网络请求,数据请求完成 通知给主线程 之前我们多用的是Handler和广播 但是随着互联网的迅速发展,需求越来越多,项目越来越复杂,代码量也很庞大,随之而来的就是...

2019-01-28 13:56:29 547

原创 横竖屏切换

最近在做项目中遇到一个问题,activity活动窗口上面被弹窗获取了焦点 这个时候横竖屏发生了切换 完蛋 页面卡死了 怎么点都不好使 下面主要是围绕这一问题的解决办法进行展开 出现这个问题主要是activity进行了重新创建 而弹窗确不会重新创建了 但我们的焦点还是保留在弹窗上面 可以这么理解 所以我们在横竖屏切换的时候设置activity不重新创建 这样依附于activity上面的...

2018-03-01 16:30:38 594

转载 各种优秀的第三方库

这里写链接内容原文地址:http://www.tuicool.com/articles/jyA3MrUAndroid开源库自己一直很喜欢Android开发,就如博客签名一样, 我是程序猿,我为自己代言 。在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 不定期的更新 这篇文章。Android下的优秀开发库数不胜数,在本文中,我列举的多是开发流程中

2017-04-27 10:12:17 982

原创 ViewPager嵌套Fragment来回滑动重新加载数据

在ViewPager中嵌套使用Fragment,他会预加载第二页的数据,但是滑动到第三页的Fragment,前面的Fragment的数据又被清空了,又要重新加载数据,下面提供两个解决办法:第一种解决方案:继承FragmentPagerAdapter 重写destroyItem 方法@Override public void destroyItem (View container, int posi

2017-01-18 13:36:44 1177

原创 不依赖activity的全局对话框的实现

实现不依赖于Activity的全局对话框有三种方式:第一个方法利用系统弹出dialog在alter.show()语句前加入:alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 然后在AndroidManifest.xml中加入权限:Android.permission.SYSTEM_ALERT_WINDO

2017-01-18 12:48:59 950

原创 Android中的权限-中英对照

<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></uses-permission>允许读写访问”properties”表在checkin数据库中,改值可以修改上传<uses-permission android:name="android.permission.ACCESS_COARSE_L

2016-05-20 15:27:19 739

转载 EventBus---基础讲解

今天看了一下别人的博客 对EventBus很是感兴趣 实用性很强 今天拿出来跟大家好好分享 一、概述EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。 1:我们需要准备EventBus的ja

2016-05-20 10:06:47 338

原创 图文混排

生活中我们使用的apk同一个页面很多的item项布局不一样 今天就说一下如何实现图文混排 实现图文混排的也就是我们的适配器 下面我们说一个例子 我们普通的聊天窗口中就是两种不同的item项 一个在左边 一个在右边 那么我们如何实现呢 下面我们就一起走进探索 import java.text.SimpleDateFormat;import java.util.List;

2016-05-19 10:48:56 740

原创 记住用户名和密码

下面我们就提供一个思想 就是介绍轻量级存储类的一个应用 借助我们的生命周期 我们在当前activity停止的时候 实现将编辑框中的内容报讯起来 下次的时候在轻量级中取出 赋值 就是这样一个简单的思想 十分easyimport android.app.Activity;import android.content.SharedPreferences;import an

2016-05-18 21:44:21 784

转载 Intent传递map集合

android开发默认情况下,通过Bundle bundle=new Bundle();传递值是不能直接传递map对象的,解决办法:第一步:封装自己的map,实现序列化即可/** * 序列化map供Bundle传递map使用 */public class SerializableMap implements Serializable { private Map<String,Objec

2016-05-18 21:10:23 9010

原创 堆内存和栈内存

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存 在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为改变量分配的内存空间,该内存空间可以立刻被另作他用。 堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在堆中

2016-05-17 09:13:35 299

原创 descendantFocusability属性用法简析

今天跟大家说一下焦点的问题 android:descendantFocusability用法简析开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存

2016-05-16 20:10:29 963

原创 AsyncTask异步交互

今天给大家说一下异步交互吧 AsyncTask处理异步交互的问题是十分方便的 内部给我们封装了线程池 也打破了子线程不能更新UI的理论 首先写个方法看一下AsyncTask中几个方法的执行顺序import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.

2016-05-15 21:22:32 448

原创 单例模式

这个模式保护类的创建过程来确保只有一个实例被创建,它通过设置类的构造方法为私有来达到这个目的。 要获得类的实例,单例类可以提供一个方法,如getInstance,来返回类的实例。该方法是唯一可以访问类来创建实例的方法。 下面是单例的一个例子: 创建一个类public class SingleTonPattern { private static SingleTonPattern inst

2016-05-14 17:05:28 267

原创 WebView 实战

今天说一下WebView 他和别的控件一样 就是一个控件 但是这个控件是加载网页的 为什么现在选择使用Webview是我们在开发中 一样的页面重复写多遍 但是有了网页 我们可以加载出来 不再使用布局设置 所以引出我们的主题下面说一下wenView怎么用呢 下面写一个小demo首先是我们的布局文件 使用一个WebView的控件<RelativeLayout xmlns:andro

2016-05-14 16:22:27 540

原创 获取系统的时间

//下面我们提供两种获取时间的方法 首先第一种获得准确的时间 年月日时分秒 public void NowTime(){ //设置日期的格式 SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = si

2016-05-14 10:25:06 312

原创 页面从底部弹出一个popWindow

//下面我们给大家提供一个代码 就是现在很多的应用都是从底部弹出一个框 我们下面就给大家展示 首先我们看一下效果首先我们需要的是准备工作 从下面进退肯定是动画 我们在res下面创建一个文件夹 anim 然后创建下面的两个xml文件 首先是进入的动画popshow_anim.xml<?xml version="1.0" encoding="utf-8"?><set xmln

2016-05-13 22:02:55 12365

原创 全局捕获异常

在我们的Android应用开发中 经常出现一些bug 这样在用户体验的过程中 就会产生不好的回应 所以项目中我们实现全局捕获异常 这样 当程序崩溃时 会将报错的信息保存上传到服务器 由服务器解决 客户端这面会土司提示我们 程序遇到错误 即将退出 比崩了温柔多了 所以现在都是提高用户体验 下面我们提供全局捕获异常的代码 首先我们写一个本身就会报错的例子

2016-05-12 21:43:08 1985

原创 访问手机中联系人页面

我们只需要在控件的监听方法中实现下面的代码 这个是开启手机联系人页面的关键 使用的是隐式跳转startActivityForResult(new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI), 1);这样就能点击跳转到手机联系人 返回的时候我们调用返回的生命周期

2016-05-12 21:04:52 997

原创 编码问题

下面说一下编码的问题 也就是请求中存在中文的情况 我们需要将中文转码一下 看下面的代码传入一个中文字符串public String Utf8(String string) { String strGBK = null; try { strGBK = URLEncoder.encode(string, "GBK");

2016-05-10 22:00:23 328

原创 四种线程池

第一种:单线程的线程池 这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来替代它。此线程池保证所有任务的执行顺序按照任务的提交顺序执行。 下面我们通过一个小例子来实现 首先在java工程中创建一个类public class MyThread extends Thread { @Override public vo

2016-05-10 21:54:36 1646

原创 AndroidStudio 中的一些快捷键

下面这个是基础的快捷键 这个会让我们的开发变得快速/** *Log日志的输出打印 直接就是loge logm logr logt * 代码提示的快捷键 ctrl+alt+space * 代码上下行移动 ctrl_shift+上下键 * 复制当前的行代码到下一行快捷键是ctrl+D * 剪切ctrl+X 粘贴ctrl+V * 删除一行代码ctrl+Y * 类中的方法之间快速的移动a

2016-05-09 12:00:03 2657 1

原创 layout_weight及常见属性解析

我们看一下下面的代码<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="

2016-05-08 21:59:20 1079

原创 分页加载

现在分页加载在apk中应用广泛 那么是怎么实现的呢 下面让我们举一个小例子来看一下 首先是我们的自定义的listview 在布局中引用 那么就看一下我们的布局文件<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.co

2016-05-08 21:06:13 1484 1

原创 UrlCollection请求+PULL解析XML+AsynTask

首先让我们看一下布局中的代码 我们只是使用一个listView来展示<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"

2016-05-04 20:04:46 382

原创 PullToRefresh上拉刷新下拉加载

xml布局<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >

2016-05-04 16:25:35 344

空空如也

空空如也

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

TA关注的人

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