
Android Studio开发实战 从零基础到APP上线
Android Studio开发实战 从零基础到APP上线-欧阳燊 学习笔记
淼森007
生命不息,奋斗不止。
展开
-
Android中连接wifi的方法
其实就是代码实现wifi连接,废话不多说,直接上代码public class MainActivity extends WaterPermissionActivity { private Runnable r; private Handler handler; @BindView(R.id.listview) ListView listview; @BindView(R.id.et_password) EditText et_password;原创 2021-08-19 15:40:09 · 7220 阅读 · 0 评论 -
Android中wifi管理器WifiManager使用方法
直接上代码WifiManager wifiManager = ((WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE));assert wifiManager != null;WifiInfo wifiInfo = wifiManager.getConnectionInfo();String SSID = wifiInfo.getSSID();int networkId = wifiInfo.getNetwork原创 2021-08-17 17:02:19 · 9853 阅读 · 0 评论 -
Android中JNI的使用方法
做Android开发的程序员应该都知道,Android的开发语言我们都是在使用JAVA(Kotlin和Flutter我们暂时不考虑)。但是,有时候我们也需要使用到C语言进行一些功能的开发。这个时候我们就需要用到JNI了。1.导入C语言的类首先我们需要把C语言写的功能类放入我们的项目中。这里我直接从资料中找了一个,毕竟我不会写。路径在src/main/jni中find_name.cpp#include <jni.h>#include <string.h>#inc原创 2021-08-04 17:22:53 · 5782 阅读 · 5 评论 -
Android中webview的相关知识点
webview是Android中用来加载网页的一个组件。有一定开发基础的Android程序员应该都是很熟悉这个组件的。有时候我们可能直接使用webview,有时候我们喜欢使用类似AgentWeb之类的三方框架。这里我总结一下webview的一些相关常用方法。今后不论怎么使用webview,这些常用方法都是必不可少的。1.webview的常用方法loadUrl:加载指定的URL,URL可以是HTTP打头的 外部网址,也可以是file打头的资产网页。 getSettings:获取浏览器的网页设置信息。原创 2021-08-03 16:58:18 · 521 阅读 · 0 评论 -
Android中资产管理器AssetManager的使用
看着这个题目是不是很熟悉,没错,今天学习的就是assets文件夹下资源的一些使用方式。1.sssets目录下放置的内容大批量的初始化数据,需要在APP第一次安装时导入数据库。因为res/values目录下方的是键值对数据(如key-value),难以转换为数据库中存储的关系型数据。 工程源码要导出为JAR包,作为一个SDK给其他工程使用。因为res目录无法集成到jar包中,所以待集成的图片资源不可放在res目录。 如网页HTML这种需要保持原有格式的文件,不适合放在res目录中进行编译。 其余原创 2021-08-03 11:24:25 · 4715 阅读 · 2 评论 -
Android 中截屏功能的实现
之前写过一个关于截图的功能,但那个是基于咱们控件的截取,如果出了自己的项目,或者层次结构复杂了,一般不好操作了就。今天学习了一个截屏工具的制作方法,在这里记录一下。我们的代码全部基于...原创 2021-07-30 15:48:44 · 2372 阅读 · 0 评论 -
Android中自定义悬浮窗
有时候,我们可能会需要制作一个始终悬浮的窗口显示一些关键信息。它独立于我们的页面,可以在不妨碍用户操作的情况下显示信息。这里我们就学习一下悬浮窗的做法。1.WindowManager的常用方法getDefaultDisplay:获取默认的显示屏信息。通常可用该方法获取屏幕分辨率。 addView:往窗口添加视图。第二个参数为WindowManager.LayoutParams对象。 updateViewLayout:更新指定视图的布局参数。第二个参数为WindowManager.LayoutPa原创 2021-07-29 11:34:13 · 5675 阅读 · 4 评论 -
Android中画中画模式的使用
当我们的APP进行视频播放时,往往希望用户在进行其他操作的时候还可以不影响他看视频,这时候就需要我们的画中画模式了。1.画中画模式的启动方式<1>首先我们要在AndroidManifest.xml中对应的Activity节点下添加android:supportsPictureInPicture="true"因为分屏模式是默认开启的,但画中画需要开发者手动开启。<2>接着就要触发画中画。这个和分屏不一样,分屏需要用户手动操作,但画中画是需要我们开发者用代码触发的。原创 2021-07-28 14:59:53 · 4238 阅读 · 0 评论 -
Android中分屏模式下的一些注意项
AndroidManifest.xml的application节点添加属性android:resizeableActivity="false"表示应用页面不接受分屏。 如果开发者想保持APP页面在分屏前的模样,则需给该页面的activity节点加上以下的属性描述,告知系统不要对这个页面动手动脚:android:configChanges="screenLayout|orientation"...原创 2021-07-28 11:40:17 · 857 阅读 · 0 评论 -
Android中声音池SoundPool的使用
对于MediaPlayer无法同时播放多个声音的问题,Android提供了声音池工具SoundPool,使用声音池即可对多个声音的播放进度调度。1.SoundPool优点资源占用量小,不像MediaPlayer那么耗资源。 相对MediaPlayer来说,延迟时间非常小。 可以同时播放多个音频,从而实现游戏过程中多个声音叠加的情景。2.SoundPool使用限制SoundPool最大只能申请1MB的内存,这意味着它只能播放一些很短的声音片段,不能用于播放歌曲或者游戏背景音乐。 虽然Sou原创 2021-07-27 17:01:18 · 2868 阅读 · 0 评论 -
Android中铃声的使用
我之前也写过利用MediaPlayer播放音频,如果我们在应用中播放音乐,自然是不成问题。但是,如果我们是要播放一个简短的音效,那就有点不合适了。所以这里我们讲解一些Android中铃声的播放。1.MediaPlayer的不足MediaPlayer的初始化比较消耗资源,尤其是播放短小铃音时反应偏慢。 一个MediaPlayer同时只能播放一个媒体文件,无法同时播放多个声音。 MediaPlayer只能播放已经完成编码的音频文件,无法直接播放原始音频,也不能流式播放(即边录边播)。2.对于第一个原创 2021-07-23 11:33:41 · 1574 阅读 · 1 评论 -
Android中利用矢量动画制作支付宝支付成功样式
之前我们学习了矢量动画,今天就利用适量动画制作一个支付宝支付成功后打钩的动画。其实这个动画简单描述如下:首先它会画一个圈,接着在圈内打个对勾。这个效果在很多地方都可以使用,比如提交成功,压缩成功等一系列耗时操作之后显示。好了,废话不多说,还是老规矩,一步一步跟着来。1.分析这个动画包含了两部分,一部分是画圈动画,另一部分是打钩动画。画圈动画结束后才开始打钩动画,所以他们是有顺序的。2.画圈动画animated_pay_circle.xml<animated-vector xmln原创 2021-07-22 17:45:37 · 804 阅读 · 4 评论 -
Android中制作简单的矢量动画
我们矢量图除了可以不使用资源图片的情况下展示一个图标,还可以用来制作一些简单的动画效果。最主要的动画效果就是path路径变化形成的动画。这篇博客我们就学习一下如何做简单的矢量动画。1.AnimatedVectorDrawable相关属性registerAnimationCallback:注册动画监听器,需实现Animation2.AnimationCallback接口的两个方法,即onAnimationStart和onAnimationEnd。 start:开始播放动画。 stop:停止播放。原创 2021-07-20 17:09:31 · 792 阅读 · 0 评论 -
Android中矢量图形的相关知识
今天开始说一下矢量图和矢量动画。1.矢量图的定义矢量是一种既有大小又有方向的几何对象,它通常被标示为一个带箭头的线段。若干个矢量拼接在一起,便形成了矢量图形。矢量图不同于一般的图形,它是由一系列几何曲线构成的图像,这些曲线又以数学上定义的坐标点连接而成。2.矢量图使用的开启方法在文件内部的defaultConfig节点之下添加下面一行配置,表示开启矢量图形的支持库vectorDrawables.useSupportLibrary = true3.矢量图不失真原因因为绘图结果是动原创 2021-07-20 10:41:03 · 1609 阅读 · 0 评论 -
Android中的插值器与估值器
1.插值器介绍插值器用来控制属性值的变化速率,也可以理解为动画播放的速度,默认是匀速播放。无论是补间动画、集合动画、属性动画,还是属性动画集合,都可以设置插值器。2.插值器实现类的说明插值器的实现类 说明 LinearInterpolator 匀速插值器 AccelerateInterpolator 加速插值器 3.估值器介绍4.估值器实现类的说明5.什么情况下原创 2021-07-17 15:15:47 · 758 阅读 · 1 评论 -
Android中属性动画组合
补间动画可以进行组合,属性动画也是可以的,下面就说一下属性动画组合的相关内容。1.AnimatorSet的常用方法setDuration:设置动画组合的持续时间。单位毫秒。 setInterpolator:设置动画组合的插值器。 play:设置当前动画。该方法返回一个AnimatorSet.Builder对象,可对该对象调用组装方法添加新动画,从而实现动画组装功能。下面是Builder的组装方法说明。with 指定该动画与当前动画一起播放 before 指定该动画在当前动画之前原创 2021-07-17 09:00:25 · 766 阅读 · 0 评论 -
Android中属性动画的相关知识点
1.补间动画的6种属性说明View类的属性名称 属性说明 属性设置方法 对应的补间动画 alpha 透明度 setAlpha 灰度动画 rotation 旋转角度 setRotation 旋转动画 scaleX 横坐标的缩放比例 setScaleX 缩放动画 scaleY 纵坐标的缩放比例 setScaleY 缩放动画 translationX 横坐标的平移距离 setTransla原创 2021-07-16 17:31:29 · 579 阅读 · 3 评论 -
Android中的集合动画
上一次我们说了Android中的补间动画,一共有四种。但有朋友会问,如果我又想平移又想缩放怎么办。那就需要我们用到集合动画了。集合动画要使用到AnimationSet类,下面是集合动画的示例,补间动画的写法这里不进行阐述,可以参考我之前的文章学习。public class MainActivity extends AppCompatActivity{ private View view; @Override protected void onCreate(Bundle sa原创 2021-07-16 11:37:33 · 367 阅读 · 0 评论 -
Android中补间动画相关知识
1.Android中补间动画的分类在Android中,补间动画一共分为4类,分别是:灰度动画:AlphaAnimation 平移动画:TranslateAnimation 缩放动画:ScaleAnimation 旋转动画:RotateAnimation2.四大补间动画父类及其常用方法Android中的四个补间动画都来自于共同的动画类Animation。这里我们说一下Animation的常用方法。setFillAfter:设置是否维持结束画面。true表示动画结束后停留在结束画面,fa原创 2021-07-15 16:49:40 · 850 阅读 · 0 评论 -
Android中淡入淡出动画
有时候我们需要切换图片的显示时,如果直接更换,展示出来的效果就会比较生硬。这是很多同学会想到淡入淡出效果。这里我们就提供了在ImageView中两张图通过淡入淡出效果切换的方式。既然要做淡入淡出效果,首先我们需要用到一个类,那就是TransitionDrawable,TransitionDrawable的相关常用方法如下:构造函数 指定过渡图形的图形数组。该图形数组大小为2,包含前后两张图形。 startTransition 开始过渡操作。这里需要先设置宿主视图,然后才能进行渐变显示原创 2021-07-15 10:13:58 · 1574 阅读 · 0 评论 -
Android中帧动画的实现
1.Android中动画分类Android中的动画分为3大类:帧动画,补间动画和属性动画2.帧动画实现方式帧动画由动画图形AnimationDrawable生成3.AnimationDrawable常用方法addFrame:添加一幅图片帧,并指定该帧的持续时间(单位毫秒)。 setOneShot:设置是否只播放一次。为true表示只播放一次,为false表示循环播放。 start:开始播放。注意,设置宿主视图后才能进行播放。 stop:停止播放。 isRunning:判断是否正在原创 2021-07-09 17:45:00 · 991 阅读 · 4 评论 -
Android中Bitmap相关知识点
我们时长在开发中接触各种图片的处理,这其中包括图片的展示,图片的修改等等操作。而这些操作的同时,我们又接触到了很多图片的操作对象,比如Drawable,比如Bitmap。今天我们围绕Bitmap来说说Bitmap是如何玩转图片的。1.Bitmap和Drawable的区别Drawable是用于展示图片的,而Bitmap是用于对图片加工操作的。2.Bitmap和Drawable相互转化Bitmap转为DrawableDrawable drawable = new BitmapDrawable原创 2021-07-09 17:01:02 · 202 阅读 · 0 评论 -
Android中侧滑菜单的实现
之前一直没有写侧滑菜单的实现方法,今天计划补上。手机开发中,往往存在很多功能没处放的问题。我们可能会把功能放入一个菜单列表,但现在一种流行的做法是侧滑菜单。侧滑菜单的做法其实是多种多样的,这里介绍一种我们常用的方法,也是Android自身为我们提供的,那就是DrawerLayout。1.DrawerLayout相关APIsetDrawerShadow:设置主页面的渐变阴影图形。 addDrawerListener:添加抽屉面板的拉出监听器。需实现监听器DrawerListener的4个方法。 o原创 2021-07-09 15:37:47 · 5087 阅读 · 5 评论 -
Android关于横向滚动和纵向滚动的冲突处理
如果我们的外部是一个纵向滚动的控件,比如ScrollView,ListView,或者GridView,里面嵌套了一个横向滚动的控件,比如ViewPager,或者横向的RecyclerView,或者一些横向的文字滚动。此时,我们通常会遇到一个问题,那就是滑动冲突。直接的感受就是操作不便,体验差。那么我们如何处理这问题呢?这里我提供一种方法,是通过外部的纵向滑动控件进行判断滚动条件,从而实现冲突的解决。意思就是,比如我们是一个ScrollView内部嵌套横向滑动的ViewPager轮播,冲突了,那么就需要我们重原创 2021-07-08 17:15:00 · 1939 阅读 · 0 评论 -
Android中手势检测器GestureDetector的使用
之前我们有说过手势监听相关的内容,同时还说过有关事件分发的。由于这些事件编写复杂,于是Android提供了一套手势监听简单的方法供我们使用,那就是手势检测器GestureDetector。首先我们先了解一下手势检测器的相关API1.构造函数:注册手势监听器OnGestureListener,该监听器提供了若干种手势方法,需要重写以接管对应的事件处理。手势方法说明如下:onDown:在用户按下时触发。 onShowPress:已按下但还未滑动或松开时触发,通常用于按下状态时的高亮显示。 onS原创 2021-04-28 11:29:07 · 1025 阅读 · 0 评论 -
Android中绘图板的实现
看到题目大家就知道这个是要做什么了。其实不光是绘图板,还有签名也可以用这个。我们直接上自定义控件。public class DrawPicture extends View { private Paint mPaint; //绘制线条的Path private Path mPath; //记录用户绘制的Path private Canvas mCanvas; //内存中创建的Canvas private Bitmap mBitmap; //缓存绘制的内原创 2021-04-28 09:24:13 · 503 阅读 · 0 评论 -
Android中手势事件处理MotionEvent相关API
我们在事件分发的时候就知道,我们的分发回调,拦截回调,处理回调中都有MotionEvent的身影,这里就总结一下MotionEvent的相关API。getAction:获取当前的动作类型,动作类型取值如下表MotionEvent类的动作类型 说明 ACTION_DOWN 按下动作 ACTION_UP 提起动作 ACTION_MOVE 移动动作 ACTION_CANCEL 取消动作 ACTION_OUTSIDE 移出边界动作 ACTION_PO原创 2021-04-20 20:12:06 · 360 阅读 · 0 评论 -
Android中手势事件的分发流程
在手机上,我们都是通过对屏幕的触摸实现软件的操作,那么这些各种的触摸事件就存在一个嵌套分发的过程,这里我们说说手势分发的相关知识。1.3类手势执行方法dispatchTouchEvent:进行事件分发处理,返回结果表示该事件是否需要分发。默认返回true表示分发给下级视图,由下级视图处理该手势,不过最终是否分发成功还得根据onInterceptTouchEvent方法的拦截判断结果;返回false表示不分发,此时必须实现自身的onTouchEvent方法,否则该手势将不会得到处理。 onInter原创 2021-04-16 17:15:48 · 661 阅读 · 0 评论 -
Android中按两次退出主界面
项目中经常要求我们在主界面点击两次返回按钮,实现退出APP的操做。首先,我们要定义一个变量private long exitTime = 0;// 用来计算返回键的点击间隔时间接着是代码部分,重写方法,并实现如下代码 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if ...原创 2019-03-06 14:34:43 · 402 阅读 · 0 评论 -
Android中物理按键的监听
上一次我们说的是依托输入框的按键监听,大多数是软键盘上的一些按键监听,也有一些物理按键。但如果界面上没有输入框,我们要监听一些按键,比如返回,我们该如何做呢。代码如下 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN){ //按下我们进行处理 if原创 2021-04-15 11:29:09 · 3199 阅读 · 2 评论 -
Android中各按键编码查询
Android中按键编码的查询表,方便对照。在onKeyDown监听中使用。按键编码 KeyEvent类的按键名称 说明 3 KEYCODE_HOME 主页键(未开放给普通App) 4 KEYCODE_BACK 返回键(后退键) 24 KEYCODE_VOLUME_UP 加大音量键 25 KEYCODE_VOLUME_DOWN 减小音量键 26 KEYCODE_POWER 电源键(未开放给普通App) 66原创 2021-04-15 11:08:27 · 1384 阅读 · 0 评论 -
Android中获取apk相关信息的方法
在开发中当我们需要获取一个apk包的相关信息,可以使用如下方法。 public static void getApkInfo(Context context, String path){ PackageManager pm = context.getPackageManager(); PackageInfo pi = pm.getPackageArchiveInfo(path,PackageManager.GET_ACTIVITIES); if (原创 2021-04-15 10:25:41 · 1066 阅读 · 0 评论 -
Android中测试网络连通性
我们之前有说过使用各种工具判断WLAN是否开启,判断当前网络是什么环境。但是我们依然无法判断因为网站问题我们连接不上的情况。这个时候就需要使用InetAddress对象了。判断代码如下 new Thread(new Runnable() { @Override public void run() { try { InetAddress host = InetAddress.ge原创 2021-04-14 16:07:08 · 1700 阅读 · 0 评论 -
Android利用Gson库解析Json字符串的方法
GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。在Android项目中,我们可以在app.gradle中添加如下语句引入Gson库compile 'com.google.code.gson:gson:2.8.2'当我们json需要转化为一个实体类时new ...原创 2019-03-04 17:28:35 · 1041 阅读 · 0 评论 -
Android中json的构建和解析
Android自带JSON解析工具,提供对JSONObject(JSON对象)和JSONArray(JSON数组)的解析处理。1.JSONObject相关APIJSONObject构造函数:从指定字符串构造一个JSONObject对象。 getJSONObject:获取指定名称的JSONObject对象。 getString:获取指定名称的字符串。 getInt:获取指定名称的整型数。 getDouble:获取指定名称的双精度数。 getBoolean:获取指定名称的布尔数。 getJS原创 2021-04-08 11:26:09 · 411 阅读 · 0 评论 -
Android中网络连接检查
开发中我们时长需要进行网络连接的检查,比如连接是否畅通,网络是wifi还是移动数据流量。之前我们有说过对wifi的判断,但那个只能判断wifi,如果要判断整体网络不太符合。所以今天我们总体说一下网络连接的检查。首先我们需要几个权限<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.IN原创 2021-04-06 13:57:51 · 821 阅读 · 0 评论 -
Android中IntentService的使用
前面我们有提过,Service可以让我们的Android程序在后台执行一些代码。这样可以不影响用户做其他操作的同时还可以执行我们的代码程序,比如播放音乐。但我们也知道,Service是执行在主线程当中的。所以当我们需要执行一些耗时操作,比如网络请求,比如图片上传压缩,那么我们就需要在Service中开启一个子线程。不过Android中已经为我们提供了一个包装好的可以执行耗时操作的Service,那便是IntentService。首先我们要有一个IntentService,编写如下:public c原创 2021-04-06 10:16:13 · 409 阅读 · 0 评论 -
Android中AsyncTask的使用
开篇之前,我要先说一下,这个AsyncTask已经过时了,如果你现在在AndroidStudio中进行编码,会发现满眼都是横线啊。于是我搜了一下,发现是因为这个东西有漏洞,容易产生内存泄漏,所以不用了。但是不用归不用,我们总要会用不是。所以我这里记录一下该类的使用。AsyncTask这个轻量级的异步任务工具,内部已经封装好Thread+Handler的线程通信机制,开发者只需按部就班地编写业务代码,无须关心线程通信的复杂流程。AsyncTask通常用于网络访问操作,包括HTTP接口调用、文件下载与上传等原创 2021-04-02 16:41:25 · 1415 阅读 · 0 评论 -
Android中ProgressDialog的用法
Android中有一个进度对话框,可以实现等待进度和具有具体数值进度的显示。说白了,一个是圆形进度条,一个是横向进度条。但是原生的,大家都明白,比较丑,一般不是很符合公司UI的规范。正常情况下我们都是要自己自定义一个Dialog或者使用三方的一些控件库。不过如果我们开发一些对于细节UI要求不是很高,可以使用原生控件的弹框等场景,可以考虑使用这种控件,毕竟不用引用三方,也不用自定义,使用起来自然是快捷方便的。所以今天我们介绍一下这个ProgressDialog对话框。1.ProgressDialog相关常原创 2021-04-02 10:21:48 · 14938 阅读 · 0 评论 -
Android中Handler和Message事件转发流程详解
之前其实我在别的博客中说过这个了,大家可以进行参考。Android Handler消息发送,子线程发消息执行UI操作Android防止Handler造成内存泄漏的方法不过这里我要进行一下比较全面一些的总结,因为关于Hanlder和Message的配合真的是很多的。我们就从主子线程消息传递来展开说说。主线程和分线程之间传递消息的步骤主要有4个。1.在主线程中构造一个Handler对象,并启动分线程这里关于分线程的启动我就不说了,因为根据实际情况的不同我们会有不同的子线程。同时,我们不会原创 2021-04-02 09:22:51 · 877 阅读 · 0 评论