
Android实战
文章平均质量分 53
主要记录实践和项目中遇到的问题
tran_sient
曾经我是一只小白,现在是一只大白。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Android Studio】- 问题记录:Could not get resoure:..XXX..gradle.pom.Received status code 400 from server
解决了Android Studio因为代理设置导致编译不通过的问题原创 2023-01-11 16:37:49 · 1315 阅读 · 3 评论 -
【Android】APT
本文介绍了Android中的一种技术:APT原创 2023-01-01 23:15:24 · 789 阅读 · 0 评论 -
【Android打包】- MAC系统AS打包出现错误:Kotlin could not find the required JDK tools in the Java installation
解决Android Studio通过./gradlew命令打包出现“Kotlin could not find the required JDK tools in the Java installation”的问题原创 2022-10-19 15:49:55 · 1258 阅读 · 1 评论 -
【Android抓包】- Stetho
有些app因为项目中网络框架的原因,可能无法通过fidder进行抓包。可以尝试使用Stetho进行抓包,此文章帮助解决可能遇到的问题。原创 2022-08-25 17:51:06 · 713 阅读 · 0 评论 -
【Android】- Glide展示网络图片,图片不更新
问题描述:使用Glide加载url中的网络图片,url下的图片已经更新,但是加载出来的图片仍是未更新前的图片。 Glide .with(context) .load(url) .into(target)原因:Glide加载图片前会去读取缓存,缓存以<K,V>的方式保存url和图片文件。因此,只要url没有改变,默认情况下Glide就会从缓存中读取这个图片。解决方法:1.跳过缓存 G原创 2022-05-17 17:25:11 · 1263 阅读 · 3 评论 -
【Android Studio】Error:Unable to resolve dependency for ‘:@debug/compileClasspath‘解决
引言:从git上拉下来的新项目,运行不了。啊这,这也太惨了吧~一般来说,这种问题是gradle版本造成的,多检查检查build.gradle文件的依赖版本号。我煎熬了三天,终于发现了问题,问题发生在项目的build.gradle文件(不是app目录下那个)。修改前:// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { r原创 2021-01-08 17:31:40 · 518 阅读 · 0 评论 -
Bundle数据保存与恢复
引言:在ViewPager中嵌套Fragment,当切换页面导致页面销毁时,数据可能会丢失,导致空指针异常,利用Bundle机制进行数据恢复,就可以有效的解决一些问题。使用:在Fragment的onViewCreated方法中可以获得Bundle数据: @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view原创 2020-11-30 17:13:42 · 650 阅读 · 3 评论 -
安卓【AlarmManager】实现周期性定时执行某项任务(每15分钟监听手机接收到的短信数量)- 轮询
引言:AlarmManager,Timer都可以实现安卓中的定时任务。但是对于一些后台任务,往往需要在cpu处于非唤醒状态时执行。使用AlarmManager结合BroadCastReceiver以及Service就能实现轮询效果。分析:在我这个demo里面,我将实现一个 “每15分钟监听手机接收到的短信数量” 的程序。当这段时间内接收的短信数量>我们设置的阈值,将会提示当前接收的短信数量,并开始下一次监听。手机收到短信时,系统会发送一条广播,我们可以定义接收器捕捉这个广播。为了程序能够后台运行原创 2020-08-21 11:16:47 · 1688 阅读 · 2 评论 -
安卓实现一个简单的相机蒙皮效果
引言:最近接到需求,要做一个仿微信拍照的程序,并添加一个证件照蒙皮。做法:自定义一个View,这个View的中心绘制一个矩形,即我们的证件框,周围绘制阴影(就是这里的蒙皮)代码:package com.example.myjcamera.cameralibrary;import android.app.Activity;import android.content.Context;import android.graphics.Canvas;import android.graphics原创 2020-08-04 16:07:04 · 869 阅读 · 0 评论 -
【安卓屏幕工具类】- ScreenUtils,获取屏幕宽高,px与dp之间的转换
说明:这里要用到一个类,DisplayMetrics类。官方这样解释这个类:A structure describing general information about a display, such as itssize, density, and font scaling.To access the DisplayMetrics members, initialize an object like this: DisplayMetrics metrics = new Displa原创 2020-08-03 16:18:13 · 862 阅读 · 0 评论 -
win10系统下Apache的基本使用
说明:apache是一款软件,用于搭建本机服务器,模拟开发时请求服务器并返回数据的过程。第一步:下载并安装直接百度即可下载,或者360软件管家等平台均可下载此软件。安装只需要一直next即可。现在输入http://127.0.0.1,若出现如下界面,则说明安装完成。第二步:启动服务器当你安装完成之后,需要启动服务器,启动方式有两种:第一种:找到你的apache安装目录,进入到bin目录下,点击运行下面这个exe接着,点击start即可,处于灰色说明已经开启了。第二种:同样的找原创 2020-07-15 18:06:42 · 1608 阅读 · 3 评论 -
【Android dark模式 初体验】
【Android dark模式 初体验】在 20...转载 2020-05-06 09:55:20 · 394 阅读 · 0 评论 -
安卓调用系统相机拍照并保存在手机中,适配7.0以上版本
引言:调用系统相机拍照是安卓中比较常见,也比较简单的功能。那么拍照后得到的照片,我们有两种处理:第一种,我们只把它们显示出来(不保存在文件中,但是这种只能显示缩略图)。第二种,我们将照片写入到文件中,即保存起来,那么就可以重复使用。对于写入到文件这种操作,7.0以上版本需要特殊照顾,以避免出现FileUriExposedException异常。第一种(获取缩略图):首先,启动系统相机:In...原创 2020-03-23 11:37:59 · 2018 阅读 · 5 评论 -
安卓属性动画之 - TypeEvaluator自定义计算器和TimeInterpolator实现自定义插值器
引言:属性动画是一种很强大的东西,不同于补间动画,它在完成之后,会保留最终的状态。比如说,实现一个平移操作,最后View就会真的失去初始的位置和占用的空间,而获得一个新的位置和空间。实现TypeEvaluator:说一下fraction,这是一个分数,在0到1之间,可以理解为进度。 /** * 自定义计算器,计算[0,1]之间对象的每个对应状态 * 我们这里改变点...原创 2020-03-13 21:31:20 · 567 阅读 · 0 评论 -
安卓设置部分文字的点击事件
引言:之前,能用一个TextView解决的事情为什么要用两个呢。方法:1.两个TextView,甚至多个,可以实现…2.正解来了,使用SpannableString或SpannableStringBuilder,这两个类专门用于字体样式设置,可以更改颜色,设置点击事件等。用法: SpannableString spannableString=new SpannableSt...原创 2020-03-10 19:27:04 · 2220 阅读 · 1 评论 -
安卓踩坑记录之自定义Drawable - 解决自定义Drawable不显示的问题
引言:只有不断地尝试,不断地摸索,不断地学习,不断地努力,你才能知道原来自己是真的菜,啊哈哈哈哈哈。但是菜归菜,多踩些坑其实是好事,踩一个少一个嘛。博主今天又解决了一个坑,就是之前写过一个自定义Drawable的test,但是运行起来之后却是一片空白,我找了许久,跟官方文档的例子比对了无数次,毕竟第一次见自定义的Drawable,害怕自己写错,最后还是没有找到不一样的地方。相信大家都经历过这种绝...原创 2020-03-03 16:00:21 · 5785 阅读 · 0 评论 -
安卓踩坑记录之XML位图<bitmap> - BitmapDrawable的详细用法 (android:tileMode="repeat" 失效问题)
引言:很久之前看到过,当时没有去仔细研究,用了之后发现并没有实现效果,今天才发现自己用错了。原来它不能设置为ImageView的src,而是应该设置为一个任意View的background。用法:它是来定义View的背景的,跟你电脑桌面设置壁纸一样,你可以设置为横铺,拉伸,等各种背景样式。这用法跟HTML背景的一些属性有点相似。详细:XML 位图XML 位图是在 XML 文件中定义的资...原创 2020-03-01 21:23:11 · 2716 阅读 · 2 评论 -
安卓实现分享图片与文本,适配7.0以上文件访问权限问题
引言:今天看官方文档,分享简单数据,即在app内实现分享文本和图片到其他应用。文本分享着还没有毛病,几行代码就解决了: Intent intent=new Intent(); intent.setAction(Intent.ACTION_SEND); /*发送文本时使用*/ intent.setType("text/plain");...原创 2020-02-22 21:11:49 · 2448 阅读 · 0 评论 -
安卓Service实现通知栏音乐播放器,切换歌曲
引言:这样的一个音乐播放器,用到了安卓四大组件的其中三个,等于说是一个比较综合性的小功能。实现方法其实有很多,我这里给出自己的方法,不喜勿喷。需求分析1.音乐播放器,那我们需要一个帮助类,来构建单例音乐播放器对象:package com.example.jackandrose.entities;import android.content.Context;import android...原创 2020-02-16 10:11:59 · 9848 阅读 · 7 评论 -
MediaPlayer之构建MediaPlayer管理类(帮助类)--单例模式
引言:我前些天,遇到了一个问题,我想实现在任何一个界面对我当前播放器播放音乐进行控制,比如当我播放视频,我想在此界面停止音乐播放。听了慕课上一个大佬讲的例子,我才明白,我们构建一个MediaPlayHelper类,使用单例模式,即可完成这项工作。package com.example.test2.entities;import android.content.Context;import...原创 2020-02-10 21:23:22 · 1412 阅读 · 1 评论 -
安卓文件操作,读写与查找,解决exists方法始终返回为false
引言:文件读写较为容易,直接使用文件输入流,输出流就可以完成以只读或只写的方式打开文件。但是要判断一个文件是否存在,即查找该文件却要注意。文件写入: private void writeDataFile() throws IOException { mUserFile = openFileOutput("user", Context.MODE_PRIVATE); ...原创 2020-02-04 10:30:24 · 3793 阅读 · 0 评论 -
获取NavigationView中headerView中控件的id,getHeaderView与addHeaderView
引言:今天要是实现一个在MainActivity里面获取NavigationView的控件,我先直接使用findViewById,结果空指针异常了。然后我就在想,是不是因为NavigationView的特性,直接引用了定义好的headerLayout,所以其实headerLayout中的控件并不能直接在activity_main中查找。正确做法:mIdtext=navigationView....原创 2020-02-03 14:02:59 · 2114 阅读 · 0 评论 -
安卓代码中获取dp值为控件设置宽高,获取dimen值
引言:今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高。本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置 LayoutParams iconparams=new LayoutParams(size,size); //又或者这样 iconparams.height=size;然后问题就来了,比如...原创 2020-02-02 17:10:25 · 3136 阅读 · 0 评论 -
安卓实现图片放大缩小,并解决onTouch与onClick冲突
引言:Matrix可以实现图片的变换,再结合onTouch中的事件,就可以实现图片放大缩小功能。而我的这个功能基于单击某个条目实现对该条目对应图片的缩放,所以单独写了一个活动,并且只点击图片,而不进行拖放,需要实现销毁活动的功能。于是,产生了onTouch与onClick冲突,这里我选择了判断操作时间来控制是否响应点击事件。详细实现,见以下代码和注释。demo:package com.exa...原创 2020-01-31 19:31:42 · 893 阅读 · 0 评论 -
安卓发送通知 解决8.0以上版本通知不显示问题
引言:几个月前,我尝试着按照网上的例子写了一段发送通知的代码,结果运行在我的手机并没有起任何的作用(版本为Andriod9.0),结果用一部6.0的手机果然就发送出去了通知。于是我明白了,是版本的问题,最后我发现要能够在 Android 8.0 及更高版本上提供通知,首先必须向createNotificationChannel() 传递 NotificationChannel 的实例,以便在系统...原创 2020-01-29 17:50:48 · 1283 阅读 · 0 评论 -
Handler实现线程间通信
引言:研究某个项目的时候发现,我看不懂它的线程通信部分,原来是Handler部分自己没有学好,所以来补一下。当你发送网络请求的时候,都是进行异步操作,因此不能直接进行UI方面的操作,这个时候你就可以通过handler向主线程发送消息,通知它更新UI。正文:1.Handler可以写成内部类,也可以写成外部类,我个人喜欢写成外部类,这样就能实现对handleMessage方法的重写,来进行UI的...原创 2020-01-28 12:40:36 · 941 阅读 · 0 评论 -
OKhttp异步与同步GET请求
引言:前些天,我在研究一个app项目结构的时候,被一个问题困扰,我发现它的网络请求部分没有单开线程,我找了半天它的异步网络请求操作没有找到,同时我又没有看懂它的Handler传递消息机制,直到今天,谜团终于打开。解释:OKhttp用于网络请求,一般常见的就是GET与POST。一个简单的get请求基本步骤如下:1.创建一个okhttpclient对象:OkHttpClient clien...原创 2020-01-28 12:04:06 · 1589 阅读 · 0 评论 -
安卓设置字符串样式,字符串中部分字体样式
引言:最近,我遇到一个问题,要显示一行字符串,但是要求部分的样式与整体不同。我以前实现这种操作的方法是用多个TextView分别设置样式。但是,今天我发现对于一些简单的样式设定,其实只用一个TextView就可以了,直接对字符串样式进行设定好了。解析:我们先来看一看安卓developer官方文档:字符串资源上图,是文档给出支持的html标签和转义符,作用是我们可以利用它们在strin...原创 2020-01-17 22:00:02 · 2747 阅读 · 1 评论 -
安卓中实体类与活动之间的通信
引言:之前,我曾经遇到一个问题,在写recyclerview的时候需要在adapter里面调用某个activity中的方法,我尝试了各种方法都没有成功。解决:我记得之前看过一些实战视频,里面的讲师曾说过activity就是context,所以其实我们只要在adapter的初始化操作时将活动作为一个context传给他就可以了,当然这个context的类型必须是某个活动,好了,上代码了。实现...原创 2020-01-12 11:36:17 · 1749 阅读 · 1 评论 -
安卓给View添加动画效果【视图动画】
说明:之前写过活动切换时的动画效果,这次我们来实现一下一般的view的动画效果。1.首先,还是要定义动画文件2.使用AnimationUtils.loadAnimation方法加载动画文件3.通过view.startAnimation方法执行动画效果,通过view.clearAnimation方法消除动画效果代码:1.加载动画文件 private void init(Cont...原创 2019-12-21 19:31:43 · 1503 阅读 · 0 评论 -
Intent标识符的使用,清理Task栈
引言:大家都知道qq的强制下线功能,会退出你之前的所有页面,再次点击back键就会退出应用,两种方法:1.新建一个类,并创建相应方法,收集所有的活动。在实现下线操作时,finish掉所有活动。2.Intent标识符:package com.example.myapplication1.activities;import androidx.appcompat.app.AppCompatA...原创 2019-12-19 20:00:54 · 445 阅读 · 0 评论 -
安卓全局活动切换动画,windowAnimationStyle与overridePendingTransition两种实现
两种方式:他们的共性是无论哪种写法,都要先将动画文件写好,即现在res目录下创建anim文件夹,并在该文件夹下创建animation文件。我们看两个文件中的内容:这是open_enter的内容,即打开活动,进入新活动的动画:<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas....原创 2019-12-19 19:23:14 · 1442 阅读 · 0 评论 -
安卓更改app中状态栏和底部手机导航栏背景颜色
相应的属性:在res目录下的values文件夹中有一个styles.xml文件,它定义了一些安卓应用的布局样式,如是否显示默认的actionbar:<?xml version="1.0" encoding="utf-8"?><resources> <style name="AppTheme" parent="Theme.AppCompat.Light....原创 2019-12-18 20:29:27 · 2325 阅读 · 0 评论 -
初次接触MVP架构 --简易版模板
MVP实现简单网络请求包模板:代码:ICallBack:package com.example.new_code_structure_learning1.model;public interface ICallBack { void ok(String responseData);}IWebModel:package com.example.new_code_str...原创 2019-11-29 23:59:28 · 368 阅读 · 0 评论 -
安卓Android Studio 下拉列表设置当前选中项
setSelection感悟:遇到问题,首先要学会思考,从不同角度去解决它。最后你会发现,答案其实就是一句话的事。现在对此颇有感触,也许前人也是经历了无数的弯路去试探,最终才给了我们正确的答案。我今天也当了一次试探者。正题:spinner可以自定义样式:adapter = new ArrayAdapter<String>(getApplicationContext(),R.l...原创 2019-11-24 21:29:15 · 3036 阅读 · 1 评论 -
RxJava2.0入门【示例展示】
初次接触RxJava:1.导入依赖:implementation 'io.reactivex.rxjava2:rxjava:2.0.1'implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'2.大概意思:rxjava就是一种观察者模式下的编程,由被观察者,观察者和订阅关系组成。3.简单示例(同步操作,暂时还不会异步)package...原创 2019-11-21 16:06:58 · 332 阅读 · 0 评论 -
关于异常“The specified child already has a parent. You must call removeView"真.解决法
大意:在用viewpager做轮播图时,重复添加的问题。出现你要添加的子view,已经有一个父view,一个父view只能添加一个子view,所以你需要先将他移除这类问题,有些人这样处理:在instantiateItem中使用如下方式:ViewGroup parent = (ViewGroup) v.getParent(); if (parent != null) {parent.rem...原创 2019-11-19 09:11:17 · 613 阅读 · 0 评论 -
Android实现圆角边框(Button,EditText,TextView)以及按钮背景设置【shape与selector】
shape的使用:大家都知道,这三大基本控件,默认的样式,都是长方形的,而现在的人们追求美观,喜欢圆角的边框,这就要用到强大的shape属性。1.首先,我们需要在drawable目录下新建一个xml文件,类型选择为shape,命名为shape_button随意命名都可以,编写如下代码:<?xml version="1.0" encoding="utf-8"?><shape...原创 2019-11-07 17:17:13 · 2844 阅读 · 5 评论 -
安卓实现下拉列表框 【Spinner】
下拉列表框引言:别人写的东西往往不能全信,照着写出bug很正常,有些东西看来还是要自己摸索啊。下拉列表,要用到Spinner控件。步骤一:你需要在布局中声明这个控件。<Spinner android:entries="@array/order" android:id="@+id/spinner" ...原创 2019-10-06 15:29:15 · 3047 阅读 · 0 评论 -
【Android Studio】使用OkHttp遇到的问题分析 闪退等
常见问题引言:作为新手,往往照着写代码会出现很多的bug。有时候还真要看看Logcat里面的报错,然后百度一下,你就会发现,大家都遇到过。我遇到的问题:1.运行闪退:其实是没加权限,既然使用OkHttp肯定要获取网络权限,添加<uses-permission android:name="android.permission.INTERNET"/>2.无法调用runOnUi...原创 2019-10-04 20:53:43 · 5429 阅读 · 2 评论