Android基础
文章平均质量分 74
ruancoder
这个作者很懒,什么都没留下…
展开
-
补间动画详解一 基类Animation
补间动画(Tween animation)是通过在两个关键帧之间补充渐变的动画效果来实现的。Android系统提供了四个补间动画的类,分别是AlphaAnimation、RotateAnimation、ScaleAnimation和TranslateAnimation,另外还有一个能够把多个动画组合起来的AnimationSet类,这些类都有一个共同的基类Animation。Ani原创 2016-08-28 19:19:27 · 5422 阅读 · 0 评论 -
使用Gson生成和解析json数据
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。项目链接:https://github.com/google/gson示例代码:Gson gson = new Gson();int[] ints = {1, 2, 3, 4, 5};原创 2016-11-29 23:06:35 · 417 阅读 · 0 评论 -
WebView与JavaScript交互
settings.setJavaScriptEnabled(true);mWebView.addJavascriptInterface(new JavascriptInterface(), "android");mWebView.loadUrl(mUrl);class JavascriptInterface { @android.webkit.Javascri原创 2016-11-29 23:31:59 · 355 阅读 · 0 评论 -
android 6.0权限判断
//判断是否开户相册权限 if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(context, android.Manifest.permission.CAMERA)) {原创 2016-11-30 23:15:41 · 2548 阅读 · 0 评论 -
微信登录、分享到微信
添加必要的权限支持: [1] 注册到微信要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(如下图所示,可以在程序入口Activity的onCreate回调函数处,或其他合适的地方将你的应用id注册到微信。[2] 发送请求或响应到微信现在,你的程序要发送请求或发送响应到微信终端,可以通过IWXAPI的 sendR原创 2016-11-30 23:37:31 · 838 阅读 · 0 评论 -
浅析Fragment中startActivityForResult()与getActivity().startActivityForResult()的异同
在Fragment类中启动另一个Activity并获取返回结果,可以使用this.startActivityForResult(),也可以使用getActivity().startActivityForResult()。那么,这两种方式有何异同呢?先来看一个示例。创建TestFragment类,继承自Fragment。添加一个按钮,点击后启动另一个Activity,重写Fragme原创 2016-12-06 18:13:31 · 2872 阅读 · 1 评论 -
实现UC浏览器启动应用时引导用户开启存储空间权限
在Android6.0之前,需要声明权限时,我们只需在AndroidManifest.xml中声明即可。但是在Android6.0之后的版本中,我们除了需要在AndroidManifest.xml中声明之外,还需要在使用该权限时动态向用户申请,且只有当用户允许以后,才能够正常使用。如果我们的应用在使用过程中,必须要使用到外部存储空间,比如下载类、工具类应用,那么如何友好的引导用户开启存储空原创 2016-12-22 19:41:41 · 6271 阅读 · 0 评论 -
实现WebView中点击图片显示大图
在新闻资讯app中,点击图片可以查看大图显示,如华尔街见闻。实现该功能,主要在于如何响应网页图片的点击事件,并获取到图片链接地址。而WebView里的交互操作,我们很容易想到使用Java与Javascript交互。好的,思路已经有了,为网页里的图片添加点击事件,在js里调用java代码,跳转到查看大图的页面,并将图片地址传递过去。下面,我们分三步来实现该功能。(1).创建Javas原创 2016-12-31 22:35:50 · 6611 阅读 · 4 评论 -
Android6.0动态权限分析
group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS gr原创 2016-12-31 23:10:16 · 428 阅读 · 0 评论 -
Android中的文件存储位置分析
应用开发过程中,避免不了需要使用到文件存储。Android在不同的系统版本中,对存储空间的使用限制会有所不同。如在6.0以上版本,对于外置存储空间的使用,需要动态申请权限,而6.0以下则不需要。不同的存储路径同样也会有区别。如内置存储空间无需权限申请可直接使用,而外置存储空间则可能会需要相应的权限。在存储文件或缓存数据时,我们需要尽量做到以下几点:(1).不要随意占用用户的内置存储。原创 2017-01-09 17:26:19 · 4408 阅读 · 0 评论 -
TabLayout属性介绍
1.什么是TabLayoutTabLayout提供了一个水平的布局用来展示Tabs。使用时直接引用design库compile 'com.android.support:design:25.1.0'在清单文件中设置如下代码即可:android:theme="@style/Theme.AppCompat"2.TabLayout的基本使用方式在布局中加入该控原创 2017-02-28 14:50:05 · 669 阅读 · 0 评论 -
微信支付踩坑之旅
前言,作为一名有经验的开发人员,竟然被集成微信支付这么一个小小的功能坑的吐血。文档不详细不够规范,Demo可以说是小学生写的吗,而且几年未更新了。。。虽然代码量很少,但是坑实在是多。一.客户端的坑在调用IWXAPI对象的registerApp()之前,我们需要先创建IWXAPI对象,那么这个对象该如何创建呢?Demo是这样写的:IWXAPI api = WXAPIFac原创 2017-01-23 01:14:26 · 1122 阅读 · 0 评论 -
升级安装APK兼容Android7.0,解决FileUriExposedException
我们在开发app时避免不了需要添加应用内升级功能。当app启动时,如果检测到最新版本,将apk安装包从服务器下载下来,执行安装。安装apk的代码一般写法如下,网上随处可以搜到public static void installApk(Context context, File file) { Intent intent = new Intent(Intent.ACTION_VI原创 2017-03-28 17:44:34 · 23564 阅读 · 1 评论 -
图片压缩
android 系统的图片压缩大体上有三种方式,质量压缩,比例压缩,采样率压缩质量压缩public static Bitmap getCompressBitmapByQuality(Bitmap bitmap, int quality) { ByteArrayOutputStream outputStream = new ByteArrayOutputSt原创 2017-03-31 23:50:33 · 607 阅读 · 0 评论 -
Android 7.0 FileProvider
Android 7.0 设备已经逐渐普及了。然而和 6.0 系统的 运行时权限 类似, Google 又针对这个版本做了一些出于安全性考虑的改动。如果针对 24+ 的 SDK 版本 进行开发,你不得不做一些适配工作。FileProvider是 Android 7.0 新增的一个类,位于 v4 包下,继承自四大组件之一的 ContentProvider ,因此需要 在清单配置文件里注册。原创 2017-03-31 23:54:47 · 1372 阅读 · 0 评论 -
管理状态栏和导航栏
系统栏(system bar)是用来显示通知、设备状态和导航的屏幕区域。一般来说,系统栏(system bar)包括状态栏(status bar)和导航栏(navigation bar),它们与应用程序同时显示在屏幕上。而相册、视频等沉浸式的应用可以淡化系统栏来创造一个更加专注的体验环境,甚至是完全隐藏系统栏。下面来介绍如何在不同的版本中淡化和隐藏系统栏,营造一个沉浸式的用户体验,同时还可原创 2016-09-08 14:52:57 · 2918 阅读 · 0 评论 -
常用adb命令介绍
adb全称Android Debug Bridge,Android调试桥。简而言之,就是连接Android设备与PC设备的桥梁,让用户可以在电脑上对Android设备进行操作。在我们实际开发中,学会使用常用adb命令有时候会更加方便省时。下面介绍一些常用的adb命令。在进入adb命令操作之前,需要先配置android sdk的环境变量。将sdk安装文件的platform-tools原创 2016-08-08 12:00:03 · 2139 阅读 · 0 评论 -
补间动画详解二 渐变动画AlphaAnimation
AlphaAnimation通过修改alpha属性,改变View的透明度,达到渐变的动画效果。AlphaAnimation类官方文档:https://developer.android.com/reference/android/view/animation/AlphaAnimation.html关于父类Animation的详解可参考文章:http://blog.csdn.原创 2016-08-29 11:02:33 · 2097 阅读 · 0 评论 -
补间动画详解三 旋转动画RotateAnimation
RotateAnimation是旋转动画的类,用于控制View的旋转动作。RotateAnimation类官方文档:https://developer.android.com/reference/android/view/animation/RotateAnimation.html关于父类Animation的详解可参考文章:http://blog.csdn.net/ruan原创 2016-08-29 17:15:47 · 4127 阅读 · 0 评论 -
补间动画详解四 平移动画TranslateAnimation
TranslateAnimation是平移动画的类,负责View的位移。TranslateAnimation类官方文档:https://developer.android.com/reference/android/view/animation/TranslateAnimation.html关于父类Animation的详解可参考文章:http://blog.csdn.net原创 2016-08-29 19:07:42 · 25379 阅读 · 1 评论 -
补间动画详解五 缩放动画ScaleAnimation
ScaleAnimation是尺寸变化动画的类,控制View的尺寸变化。ScaleAnimation类官方文档:https://developer.android.com/reference/android/view/animation/ScaleAnimation.html关于父类Animation的详解可参考文章:http://blog.csdn.net/ruancod原创 2016-08-29 23:35:15 · 35043 阅读 · 0 评论 -
逐帧动画详解
概述逐帧动画(Frame Animation),是通过将一系列图片按照一定的顺序展示实现的动画。同是视图动画(View Animation),在使用时比补间动画(Tween animation)要简单很多。一、逐帧动画的使用(1).使用xml文件创建节点介绍::必须作为根元素,可以包含一个或多个元素。:代表一帧动画。属性介绍:android:oneshot:若等原创 2016-08-30 20:36:45 · 5677 阅读 · 0 评论 -
ImageView的ScaleType详解
ScaleType表示ImageView的缩放类型,决定了一张图片在ImageView控件内如何缩放和显示。ScaleType的官方文档:https://developer.android.com/reference/android/widget/ImageView.ScaleType.htmlScaleType可以使用java代码或xml属性来设置。Scale原创 2016-08-31 16:55:49 · 2239 阅读 · 0 评论 -
selector的使用及执行流程
selector是Android中的背景选择器。一个selector使用几个不同的drawable来表示相同的图形,根据对象的状态来决定使用哪一个drawable。比如,一个按钮可以有不同的状态,默认状态、被按下的状态。官方文档:https://developer.android.com/guide/topics/resources/drawable-resource.html原创 2016-09-02 00:42:17 · 3616 阅读 · 0 评论 -
获取LayoutInflater的三种方式分析
对于LayoutInflater的定义,我们来看一下官方文档, Instantiates a layout XML file into its corresponding android.view.View objects. 意思是,将一个XML文件实例化为对应的View对象。在实际开发中,我们避免不了需要使用到LayoutInflater类中的inflate()方法。对于LayoutInfla原创 2016-06-26 01:11:44 · 4403 阅读 · 0 评论 -
原生下拉刷新SwipeRefreshLayout的使用
说到下拉刷新,最为人所知的就是chrisbanes的Android-PullToRefresh,一个强大的下拉刷新开源项目,支持各种常用控件。后来,Google为我们提供的android-support-v4包,从19.1版本开始,推出了自己的下拉刷新控件SwipeRefreshLayout。在知乎和豌豆荚等应用中我们都可以看到SwipeRefreshLayout的影子。SwipeRefr原创 2016-07-04 17:31:05 · 4302 阅读 · 0 评论 -
使用Fragment实现Tab切换(高仿微信主界面)
先来看效果图:在2.x版本时代,我们都是使用TabActivity和TabHost组合来实现页面的tab切换。TabActivity是一个特殊的Activity,它继承自ActivityGroup,内部可容纳多个Activity,违反了Activity的单一窗口原则,虽风靡一时却难免被抛弃。3.0版本出现之后,Google推出了一个新的类Fragment,且TabAct原创 2016-07-08 00:22:15 · 8633 阅读 · 0 评论 -
获取短信验证码时的倒计时按钮实现
在Android中实现倒计时有多种方式,如使用传统的java方式Timer+TimerTask等,这里我们使用系统自带的类CountDownTimer。CountDownTimer内部使用的是Handler来实现倒计时功能的。为了方便在多个页面中使用该功能(如注册、找回密码、重置密码),这里将该功能封装到CountDownTimerButton类中。在使用CountDownTi原创 2016-07-09 13:25:49 · 6979 阅读 · 1 评论 -
仿新浪微博加号弹出界面动画
在使用新浪微博时,通过点击主界面底部的“+”按钮,会弹出一个包含各种按钮操作的界面。这个界面的用户体验比较酷炫,如中华万年历等app都在使用,首先我们来看一下效果图。接下来,我们对该页面的动画效果进行分析。在整个操作流程中,涉及到的动画如下:(1).当面板视图显示时,按钮从屏幕底部进入并附带弹性效果的动画;<translate xmlns:andr原创 2016-07-11 09:52:45 · 9842 阅读 · 5 评论 -
使用apktool反编译apk文件
ApKtool是一个apk编译工具,能够反编译apk文件。Apktool官方介绍:http://ibotpeaches.github.io/Apktool/当前Apktool的最新版本为2.1.1,需要JDK1.7的支持。在进入Apktool的安装之前,请确保电脑已安装JDK1.7。可通过命令行java -version查看当前已安装JDK的版本信息。一、安装A原创 2016-07-16 14:03:42 · 13695 阅读 · 0 评论 -
购买栏悬浮效果实现
在各电商APP的商品详情页中,我们经常会看到这种效果。默认情况下,购买栏显示在商品图片下方:当页面向上滑动,购买栏滑动到屏幕顶部时,会一直固定在屏幕顶部:今天我们来实现这种显示效果。实现思路:首先,页面能够滚动,需要ScrollView的支持。在ScrollView内部,包含一个垂直方向的LinearLayout,商品图片和购买栏呈垂直线性排列,这些都比较容易想原创 2016-08-03 23:46:05 · 2820 阅读 · 0 评论 -
android6.0权限适配RxPermissions
1.直接获取权限(使用Retrolambda使代码更加简洁,当然并不是必须使用):// 必须在初始化阶段调用,例如onCreate()方法中RxPermissions.getInstance(this) .request(Manifest.permission.CAMERA) .subscribe(granted -> { if (grante原创 2017-03-31 23:56:50 · 1006 阅读 · 0 评论