Android笔记
文章平均质量分 60
yypccc
暂无
展开
-
exifinterface获取图片属性并旋转
exifinterface获取图片属性并旋转1、加入依赖implementation 'com.android.support:exifinterface:27.1.1'2、旋转代码Matrix mat = new Matrix();Bitmap bitmap = BitmapFactory.decodeFile(path, options);ExifInterface ei = n...原创 2019-12-25 10:46:11 · 721 阅读 · 0 评论 -
Bitmap、BitmapFactory、BitmapFactory.Options知识整理
1.Bitmap1.1非静态方法 public void recycle()——回收位图占用的内存空间,把位图标记为Dead public final boolean isRecycled() ——判断位图内存是否已释放 public final int getWidth()——获取位图的宽度 public final int getHeight()——获取位...转载 2018-04-27 10:58:34 · 331 阅读 · 0 评论 -
Android音频播放—MediaPlayer
先来看看 MediaPlayer 的生命周期:这张状态转换图清晰的描述了 MediaPlayer 的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,如果使用时 MediaPlayer 的状态不正确则会引发 IllegalStateException 异常。Idle 状态:当使用 new() 方法创建一个 MediaPlayer 对象或者调用了其 reset(...原创 2018-04-26 11:36:11 · 420 阅读 · 0 评论 -
Android音频录制—MediaRecorder
MediaRecorder (基于文件录音) 集成了录音,编码,压缩等,支持少量的音频格式文件。 优点:封装度很高,操作简单 缺点:无法实现实时处理音频,输出的音频格式少。首先来看看 MediaRecorder 的生命周期:从生命周期中可以看出,录制音频的基本步骤如下:MediaRecorder mMediaRecorder= new MediaRecorder();/...原创 2018-04-26 10:41:25 · 975 阅读 · 0 评论 -
ContentProvider简单学习
ContentProvider 对应用之间数据访问起着很重要的作用,比如我们在自己的应用中去获取联系人信息,相册图片等文中主要涉及的知识点UriMatcherSQLiteOpenHelperContentProviderContentProvider配置权限等开始之前,建议将外部访问的Uri参数进行常量化先来看看Uri格式 Authority: 授权信息,用以区别不...原创 2018-04-12 18:00:28 · 253 阅读 · 1 评论 -
仿Win8图标按下回弹效果
本文参考鸿洋大神的文章 https://blog.csdn.net/lmj623565791/article/details/23441455效果如图: 布局如下:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.a...转载 2018-04-16 16:52:54 · 248 阅读 · 0 评论 -
JAVA正则表达式:Pattern类与Matcher类详解
投资种类众多,目前彩票投资也算不错的一种方式【TimQ-252191343】首先,从最基础的【8码】讲解开始一、人工计划玩法:每期杀两个号资金分配:四期一收,翻倍二、自制计划最简单就是【顺龙】,如下图:这里举例,只是一种顺龙方法,还是很稳的 根据走势,确定一个车。 根据冷热码选八位,进行跟,比如1、10名的6好多期都为热码,有变冷码的趋势,那就在走势逆转时,计划定为23456789名买转载 2018-01-17 10:37:02 · 175 阅读 · 0 评论 -
MotionEvent的几个值
MotionEvent.ACTION_DOWN:在第一个点被按下时触发MotionEvent.ACTION_UP:当屏幕上唯一的点被放开时触发MotionEvent.ACTION_POINTER_DOWN:当屏幕上已经有一个点被按住,此时再按下其他点时触发。MotionEvent.ACTION_POINTER_UP:当屏幕上有多个点被按住,松开其中一个点时触发(即非最后一个点被放开时)。Mo原创 2017-10-25 10:39:24 · 376 阅读 · 0 评论 -
不让EditText自动获取焦点
在父级布局上加如下代码:android:focusable="true"android:focusableInTouchMode="true"原创 2017-10-16 16:35:01 · 633 阅读 · 0 评论 -
SpannableString使用笔记
一、注意点 1、setMovementMethod,此方法在需要响应用户事件时使用,如点击一个电话号码就跳转到拨号页面。如果不执行这个方法是不会响应事件的,即便文本看着已经是下划线蓝色字了。 2、它是用来标识在 Span 范围内的文本前后输入新的字符时是否把它们也应用这个效果。分别有:Spanned.SPAN_EXCLUSIVE_EXCLUSIVE(前后都不包括)Spanned.SPAN_IN原创 2017-10-24 10:18:26 · 525 阅读 · 0 评论 -
SVG学习--VectorDrawable的使用
作者:r17171709 原文地址:http://www.jianshu.com/p/709994b08683 SVG的全称是Scalable Vector Graphics,叫可缩放矢量图形。它和位图(Bitmap)相对,SVG不会像位图一样因为缩放而让图片质量下降。它的优点在于节约空间,使用方便 Android 5.0中引入了 VectorDrawable 来支持矢量图转载 2017-08-14 11:26:46 · 791 阅读 · 0 评论 -
Android库相关知识整理
一. 引入库模块要在另一个应用模块中使用您的 Android 库的代码,请按以下步骤操作:1、通过两种方式之一将库添加到您的项目(如果您是在相同项目中创建的库模块,则该模块已经存在,您可以跳过此步骤):添加已编译的 AAR(或 JAR)文件: 点击 File &gt; New Module。依次点击 Import .JAR/.AAR Package 和 Next。输入 AAR ...原创 2018-05-14 10:33:18 · 203 阅读 · 0 评论 -
Instant Run默认启动的条件
使用调试构建变体构建您的应用。 使用 Android Plugin for Gradle 2.3.0 或更高版本。 在应用的模块级build.gradle 文件中将 minSdkVersion 设置为 15 或更高。 点击 Run ,将您的应用部署到运行 Android 5.0(API 级别 21)及更高版本的设备上。...原创 2018-05-15 14:43:09 · 489 阅读 · 0 评论 -
android.dexOptions.javaMaxHeapSize 与 org.gradle.jvmargs
如果在模块的 build.gradle 文件(控制着 DEX 编译器的堆大小)中为 android.dexOptions.javaMaxHeapSize 定义值, 则需要将 Gradle 的堆大小设置为比 javaMaxHeapSize 属性设置的值大 512 MB 并且至少为 1536 MB。例如:如果将 javaMaxHeapSize 设为 1280 MB,则必须将 setting.gr...原创 2018-05-15 14:51:10 · 6720 阅读 · 0 评论 -
自定义View之Measure过程
一、测量规格MeasureSpec说明1、结构说明2、使用说明/** * MeasureSpec类的具体使用 **/// 1. 获取测量模式(Mode)int specMode = MeasureSpec.getMode(measureSpec)// 2. 获取测量大小(Size)int specSize = MeasureSpec.getSize(measureSpe...原创 2019-01-23 10:37:42 · 235 阅读 · 0 评论 -
自定义View之Draw过程
一、单一View二、ViewGroup原创 2019-01-25 10:01:07 · 243 阅读 · 0 评论 -
自定义View之Layout过程
一、单一View二、ViewGroup原创 2019-01-25 09:58:17 · 208 阅读 · 0 评论 -
两个安卓模拟器进行Socket通信 — TCP方式
在一台电脑上,进行两个安卓模拟器的Socket通信时,因为host都是127.0.0.1,所以连接一直失败。解决方法:1、运行服务端模拟器,端口配置为88802、客户端模拟器,host配置为10.0.2.2,端口配置为8881在终端执行命令:adb -s emulator-5554 forward tcp:8881 tcp:8880它会将 8881 端口的数据全部重定向到 8880 ...原创 2019-01-08 17:00:35 · 1191 阅读 · 0 评论 -
滑动知识相关整理
一、RecyclerView滑动监听recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState){ //滑动状态改变 super.onS...原创 2019-01-08 15:58:25 · 1381 阅读 · 0 评论 -
ConstraintLayout约束布局——实现左文右图效果
先来看下想要的效果:左文右图,标题最多显示2行,时间和图片底部对齐1、问题说明: 在这个布局中,左边的文字和时间是一个整体,右边的图片是一个整体,让图片只位于文字右侧或者时间右侧都是不对的。(1)图片位于文字右侧:当文字较少时,时间可能会遮挡图片。(2)图片位于时间右侧:当文字较多时,文字可能会遮挡图片。对应代码如下: <android.support.constraint....原创 2018-12-25 15:28:33 · 1853 阅读 · 0 评论 -
Android 一键清除其他app的数据(快捷方便)
如何在自己的app里面,一键清除其他应用的数据???看了很多网上的教程,80%都说需要将自己的app打包为系统应用,我想说这也太麻烦了吧,那几个aidl文件就得折腾好久,再别说拿到对应手机系统的签名了。下面介绍一种简单快速地做法:一、手机必须已经获取root权限很多app可以帮你做到,比如:root精灵,SuperSU,KingRoot等 二、为自己开发的应用获取Root权...原创 2018-12-07 22:27:25 · 6446 阅读 · 2 评论 -
自定义 View 添加类似 android:layout_gravity 属性
平时自定义View,会遇到类似 android:layout_gravity=”left|bottom” 这样的属性。 本文就简单讲讲这种属性怎么在 styles.xml 中定义。其实,就是 attr 属性不设置类型,然后那里面所有的变量值使用 flag 声明,如下:<declare-styleable name="XShadow"> <attr name="sh...原创 2018-07-16 12:46:00 · 1296 阅读 · 0 评论 -
ARouter自定义服务流程
1、声明服务接口public interface IHomeProvider extends IBaseProvider { //Service String HOME_MAIN_SERVICE = "/home/main/service"; void toast(String msg);}2、实现服务接口@Route(path = IHomeProvid...原创 2018-05-30 17:40:06 · 1741 阅读 · 0 评论 -
android:pathData 属性
先来说明下,大写字母表示绝对位置,小写字母表示相对前一个点的位置一、直线 (1)只标注点x、y 分别表示点的横、纵坐标,不做绘制操作 M x, y(2)画线L 用来画某个点到(x, y)的直线 L x, y H 用来画横坐标的线,参数表示直线长度 H xV 用来画纵坐标的线,参数表示直线长度 V y(3)闭合L 起点坐标 可...原创 2018-05-23 11:29:34 · 1673 阅读 · 0 评论 -
Viewpager+Fragment滑动卡顿,报ANR错误 (setUserVisibleHint的使用)
1、问题(1)我们通常会设置 Viewpager 的预加载页数,setOffscreenPageLimit(),但是一次加载的页面太多,就会出现渲染器被阻塞,要么卡顿,要么直接 ANR(2)但是,设置的预加载页面太少,每滑动一次,该页面就会重新加载,有的页面数据很多,重新加载起来就很慢,直接影响用户体验2、考虑到这两种情况,我们可以这么解决(1)setOffsc原创 2017-04-11 16:07:27 · 1227 阅读 · 0 评论 -
生成随机文件名(年月日+5位随机数)
fun getRandomFileName(): String { val simpleDateFormat = SimpleDateFormat("yyyyMMdd") val date = Date() val str = simpleDateFormat.format(date) // 时间 val random = Random() val原创 2017-03-13 18:18:53 · 1704 阅读 · 0 评论 -
Android图片预览功能(可旋转、缩放、左右切换)
我们要实现的效果1、点击图片出现预览界面2、可对图片进行旋转、缩放3、能左右滑动,预览其他图片4、单击预览界面后,回到上一界面具体如下图: 使用到的第三方库1、图片加载缓存库 Picasso:https://github.com/square/picasso2、图片浏览缩放控件 PhotoView:https://git原创 2017-03-12 20:05:52 · 13138 阅读 · 0 评论 -
四大组件BroadcastReceiver的工作过程
BroadcastReceiver???????????????????????????????????????????????1)????????Manifest.xml????????PackageManagerService???????? 2)???????registerReceiver()??IntentFilt原创 2016-08-01 15:58:07 · 525 阅读 · 0 评论 -
四大组件Service的工作过程
一、Service的工作状态 1、启动状态用于执行后台计算Intent intent = new Intent(this, MyService.class);startService(intentService);2、绑定状态用于其他组件和Service的交互Intent intent = new Intent(this, MyService.clas原创 2016-08-01 14:14:24 · 870 阅读 · 0 评论 -
四大组件Activity的工作过程
由于Android系统内部对Activity做了封装,使得调用很方便,而且显式调用只要两行代码就能搞定:Intent intent = new Intent(this, OtherActivity.class);startActivity(intent);尽管Activity内部的具体实现很复杂,但是掌握一个大概的流程还是必要的,具体如下:1、startAct原创 2016-08-01 10:27:30 · 699 阅读 · 0 评论 -
初始Window和WindowManager
一、Window和WIndowManager1、添加Window1)先新建一个WindowManager.LayoutParams对象layoutParams2)设置layoutParams的flags、type、gravity等参数3)最后通过WindowManager.addView(view, layoutParams)完成添加2、flags属性FLAG_原创 2016-07-30 14:03:04 · 366 阅读 · 0 评论 -
Android动画
一、View动画1、View动画的种类 -android:interpolator 动画集合所采用的插值器-android:shareinterpolator 集合中的动画是否和集合共享同一个插值器1)平移动画 -android:duration 动画持续时间 -android:fromXDelta 表示x的起始值 -android:fromYDelta 表示原创 2016-07-29 14:52:36 · 509 阅读 · 0 评论 -
RemoteViews介绍
一、RemoteViews的应用1、在通知栏上的应用1)通过构造方法RemoteViews(当前包名,布局文件ID),新建一个RemoteViews对象。2)通过一系列set方法,更新布局。3)通过notification.contentView = remoteViews,完成通知栏布局的设定。2、在桌面小部件上的应用1)定义Widget的布局:在res/layo原创 2016-07-28 13:56:58 · 495 阅读 · 0 评论 -
View的工作原理
一、ViewRoot和DecorView1、ViewRoot1)ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均通过ViewRoot来完成。2)在Activity线程中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将Vie原创 2016-07-27 10:54:26 · 344 阅读 · 0 评论 -
View的事件体系
一、View基础知识1、View的概念View是对界面层控件的一种抽象,它代表了一个控件。除了View,还有ViewGroup,ViewGroup继承自View,表示由多个控件组成的一组控件,也就是说,View既可以表示一个控件,也可以表示由多个控件组成的一组控件。2、View的位置参数1)left:View左边到父布局左边的距离2)right:View右边到父布局原创 2016-07-26 10:06:00 · 352 阅读 · 0 评论 -
Android的IPC机制二
一、Android中的IPC方式1、使用Bundle因为Bundle实现了Parcelable接口,所以能在不同进程间传递数据,但是这个数据必须能够被序列化,比如基本类型、实现了Parcelable接口或者Serializable接口的对象、Androidzhi支持的特殊对象。2、使用文件共享因为Android系统基于Linux,所以不同进程可以对文件进行并发的读写操作,尽管这原创 2016-07-25 11:16:38 · 395 阅读 · 0 评论 -
Android的IPC机制一
一、Android中的多进程模式1、多进程的应用情况一个应用因为自身的需要采用多进程模式来实现。 当前应用需要向其他应用获取数据,所以必须采用跨进程通信。2、多进程模式的实现正常情况:在Manifest.xml文件中为四大组件配置android:process属性。特殊情况:通过JNI在native层fork一个新进程。注意:android:process属性的值以”:”开头,表示在原创 2016-07-24 16:39:07 · 431 阅读 · 0 评论 -
四大组件ContentProvider的工作过程
当ContentProvider所在的进程未启动时,第一次访问它时,就会触发ContentProvider的创建,这也伴随着ContentProvider所在进程的启动,而ContentProvider中四个方法的任何一个都会触发ContentProvider的启动过程。1、通过acquireProvider()来获取ContentProvider内部直接调用ActivityThrea原创 2016-08-01 17:07:13 · 531 阅读 · 0 评论 -
Android的消息机制
一、概述Android中线程操作主要有两个规则:1、只能在主线程中更新UI,否则抛出异常2、耗时操作必须在子线程进行,在主线程进行会引起ANR错误针对上面两种情况,Android引入了消息机制:Android的消息机制主要指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支持。MessageQueue是消息队列,采用单原创 2016-08-02 12:18:22 · 289 阅读 · 0 评论 -
NDK编程初试
在学习NDK编程之前,看了很多网上的配置教程,这些教程要么时间久远,要么用到的工具的版本不是最新的,所以对于当前最新环境下的NDK配置以及开发,只能做一部分参考,下面来说下我的初试流程。工具和环境:Android 开发工具:Android Studio 2.1.2Android NDK:android-ndk-r10djava环境:jdk-8u601、新建一个Andro原创 2016-08-08 22:05:25 · 413 阅读 · 0 评论