Android
yijiaodingqiankun
我是一个从事了10年android 开发的安卓工程师
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JavaWeb 自己给服务器安装SQL Server数据库遇到的坑
这次身份验证选择SQL Server身份验证,填写登录名,密码,点击连接,就连接上数据库了。登录名,在登录名上右键→新建登录名,名称随便起,起个你自己喜欢的,然后选择SQL Server身份验证,如下图所示,图中第4步你可根据你的需求进行勾选,我是为了学习,所以都把勾去掉了,选好以后点击确定。我买了阿里云云服务器,但是没有数据库,于是自己装了一个SQL Server数据库,总结一下遇到的坑。别急,坑就在这里,由于我是利用业余时间处理这个问题,而且是想动的时候才处理,所以拖了半个月时间。原创 2024-02-25 23:24:43 · 933 阅读 · 0 评论 -
Android 搜索框:SearchView的属性和用法详解(java)
SearchView是Android原生的搜索框控件,它提供了一个用户界面,用于用户搜索查询。SearchView默认是展示一个search的icon,点击icon展开搜索框,如果你想让搜索框默认就展开,可以通过setIconifiedByDefault(false);实现。原创 2022-12-08 18:05:55 · 4552 阅读 · 0 评论 -
Android 百度地图之路径规划
我集成了百度地图驾车路径规划,但总是不规划,下面我来简单说说吧。首先就是按照百度官方文档按步骤复制粘贴对应的代码到自己工程。百度地图驾车路径规划网址:https://lbsyun.baidu.com/index.php?title=androidsdk/guide/route/drive说说要注意的点:第二步有红体字,下载demo,然后复制需要的类到你的项目。注意坑,下面我要说坑了,我花了2天才搞定。坑就是你要把demo中的assets文件夹直接复制到你的项目。那么问题来了,文件夹放哪里呢?原创 2022-05-20 19:37:47 · 1140 阅读 · 0 评论 -
Android JSON must start with an array or an object.
我用Retrofit POST方法上传头像,每次一点上传就传回JSON must start with an array or an object.困扰了很久,一直没有头绪,今天,终于解决了。//上传头像@Multipart@POST("xxx/photo")Call<ResponseBody> upPhoto(@Part("photo") RequestBody body, @Part("username") RequestBody username);注意:类型必须是 Re原创 2022-04-12 23:33:13 · 2258 阅读 · 0 评论 -
Android 如何保存Switch的状态
写个工具类,下面是工具类中的方法public static void saveSwitch(Boolean flag) { SharedPreferences aSwitch = App.activity.getSharedPreferences("switch", Context.MODE_PRIVATE); SharedPreferences.Editor edit = aSwitch.edit(); edit.putBoolean("state", flag); .原创 2022-04-12 22:22:19 · 3583 阅读 · 0 评论 -
如何从svn上下载文件
使用svn向指定文件夹下载数据http://jingyan.baidu.com/album/1709ad80790eae4635c4f058.html?picindex=1 在要下载数据的地方新建文件夹 选中文件夹右键-》svn-》Chenckout 填写保存在svn里文件路径 填写完成后点击“OK” 填写用户名、密码,勾选保存密码 svn就开始下载数据了 下载完成后打开文件夹,就可以看到我们下载的文件原创 2022-04-03 09:22:01 · 11940 阅读 · 0 评论 -
Android 圆形头像控件CircleImageView
依赖:dependencies { ... implementation 'de.hdodenhof:circleimageview:3.1.0'}<de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/profile_image" android:layout_width=原创 2022-03-24 19:22:42 · 994 阅读 · 0 评论 -
Android NavigationView menu菜单中item加入SwitchCompat
最近写了个侧滑菜单,需要在里面加个开关,如下图android 自定义menu菜单中加入SwitchCompat为啥不用Switch呢?因为SwitchCompat是androidx里面的,是最新的控件,你用Switch用几天过时了还得换,麻烦。一、在menu的item中引用该布局这里用到了app:actionLayout来指定自定义菜单布局,需要注意的是必须是app:actionLayout,而不是android:actionLayout下面上代码:<menu ...原创 2022-03-24 19:07:18 · 3184 阅读 · 0 评论 -
Android TabLayout+ViewPager2
由于谷歌对Android Studio的不断更新,和对代码库、SDK等不断更新,导致以前的好多代码都不能正常运行了,今天就给大家说说TabLayout+ViewPager2。TabLayout+ViewPager相信大家都会用,我前年写了段代码,大致写完了,一直没管,今天测试发现不能用。一点就崩,什么问题呢?我用的androidX库中的TabLayout+ViewPager2,然后我接收的时候用的ViewPager,类型转换异常,更正错误后发现,适配器中的代码都变红了。找了各种文档,发现说TabLayo原创 2022-02-17 18:14:01 · 2706 阅读 · 0 评论 -
Android Studio如何用无线(WiFi)连接手机进行调试
今天是2022年2月15日,农历正月十五。截止今日,我已经一年多没写代码了,去年干了一年铸造。今天无意间看到原来Android Studio还可以无线连接手机,进行调试。早在2017年就可以了,我居然现在才知道,好无语。好了,废话不多说,直接上干货。首先打开Android Studio,然后file——》Setting,接下来就照着下图操作就好,操作到第4部就可以了。5是pad用的,6是2017年的连接插件,2是2021年11月22日的插件,从图上右边就可以看出来。点第二步记得点Install,这是安装原创 2022-02-15 17:52:30 · 32293 阅读 · 18 评论 -
Android Studio如何批量删除textView.setText();
Android Studio如何批量删除textView.setText(“”+123+2*456);textView.setText(“”+258+2*456);这样的内容。在实际开发中有很多时候会遇到这样的情况,在不同的地方,卡卡写了一大堆,到最后发现还能更简便,或者这些内容不要了,那么一行一行的删很麻烦,几行还好,几百行呢?方法其实很简单。Ctrl+R这是查找与替换功能,上面一行写textView.setText(.*);下面一行啥都不要写,点替换所有,这些textView.set原创 2021-11-03 22:43:57 · 2032 阅读 · 0 评论 -
Android Studio开发的应用程序,APP图标不显示(显示不正常)
去年写了个APP,不知道为什么,我给它设置了图标,但是就是不能正常显示,具体就是当你打开手机找到这个应用的时候,你会看到它的图标还是机器人,但是当你打开手机正在运行的程序时()你会看到...原创 2021-06-14 23:32:52 · 5746 阅读 · 3 评论 -
Android 新版studio(4.1.2)debug版apk发送到微信无法安装
刚升级了studio,之前一直用的2.3.3,现在旧版无法正常使用了,于是升级到了4.1.2,用新版的写了个demo,用微信发给别人,告诉我不能安装,我自己试了一下,发现确实不能安装。经过苦心百度,终于搞定了,哈哈,其实分分钟就百度到了。下面来说说具体情况。写好的apk,debug版的,直接运行在手机上,一点问题都没有,当你发送到微信,然后再安装到手机,你会发现安装失败。解决办法很简单,只需添加一行代码,android.injected.testOnly=false 什么?你还是不明白?没关系,原创 2021-04-09 23:02:12 · 787 阅读 · 0 评论 -
Android Banner2.1.0
由于最近更新了studio,好多东西需要更新,那就彻底一点吧,banner原来用的1.4.9的,新版的更新了好多,之前的方法不能用了,不多说直接上代码。依赖:implementation 'com.youth.banner:banner:2.1.0'<com.youth.banner.Banner android:id="@+id/banner_index" android:layout_width="match_parent" android:layout_h原创 2021-02-19 09:33:18 · 8208 阅读 · 12 评论 -
Glide 4.12.0使用
前两天更新了Android Studio,更新到了4.1.2,这一版的支持库是AndroidX,相应的之前的项目中的很多第三方也需要更新一下,我之前Glide用的3.8.0,现在已经到4.12.0了,是不是更新的很快,这也很让人痛苦,我需要做很多别的事情,然而还得不停的更新一下第三方的依赖等。好了,说正题吧,今天我们来说一下Glide4.12.0如何使用。依赖: implementation 'com.github.bumptech.glide:glide:4.12.0' annotatio.原创 2021-02-15 16:26:47 · 5716 阅读 · 0 评论 -
如何设置Android Studio4.1.2的编辑区背景颜色
我新下载了最新的Android Studio,可是原来的设置都不能用了,需要重新设置,网上有很多,但和最新版有些地方不一样,导致我找了好久,今天把它分享给各位同行。背景色你们可以随便设置,如果也想设置成和我一样,那么把下面字母填入即可。豆沙绿#BEEBBE...原创 2021-02-05 13:15:48 · 856 阅读 · 0 评论 -
下载安装新版Android Studio4.1.2无法启动的问题
我原来的Android Studio是2.3.3版本的,想更新成最新版,发现只能下载,从新安装,于是我把之前的卸载了,新版的下载好安装,都没问题,启动的时候进度条到80%就不动了,搞了我2天,今天终于搞定了。android studio启动了之后进度条卡住不动启动不起来的原因是因为,新版的Android Studio更换了某些配置的文件夹,和之前的有冲突,还有就是之前的配置文件和新版有冲突,也可能是新老配置不兼容。解决这个问题的方法很简单,就是把原来的配置文件删掉就好了。步骤:首先,原创 2021-02-04 15:49:33 · 1830 阅读 · 9 评论 -
Android页面引导蒙版(浮层)库
前言每当一个项目开发一个新功能,总会想办法及时让用户得知有这样一个新功能,这时通常会采用引导页或者蒙版(浮层)的方式提心用户,这里有需要关注的新内容。遇到这种需求,最简单的想法就是将引导的布局直接写在对应的页面中,在首次打开时显示,之后隐藏。但是用这种做法来显示只会出现一次的布局,显然有些浪费资源。而且很low,完全体现不出OOP的编程思想。我们的项目中原来使用的是:http://www.jianshu.com/p/5aa96683d0dc可以看到这是一个非常好的思路,通过DecorView来添加引转载 2020-08-23 23:09:37 · 1990 阅读 · 1 评论 -
Android混淆从入门到精通
简介作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。说在前面这里我们直接用Android Studio来说明如何进行混淆,Android Studio自身集成Java语言的ProGuard作为压缩,优化和混淆工原创 2020-08-12 11:23:49 · 215 阅读 · 0 评论 -
Android TimePicker
<TimePicker android:id="@+id/timePicker" android:layout_width="match_parent" android:layout_height="wrap_content" />TimePicker 本身自带两种风格,都可以在xml中设置,一种是android:timePickerMode="clock"另一种是:android:timePickerMode="spinner"Ti..原创 2020-07-21 15:29:17 · 606 阅读 · 0 评论 -
Android 获取apk安装路径、安装包路径
// 获取当前程序路径 /data/data/com.example.androiduninstall3/filesString path1 = getApplicationContext().getFilesDir().getAbsolutePath();// 获取该程序的安装包路径 /data/app/com.example.androiduninstall3-1.apkString path2 = getApplicationContext().getPackageResour...转载 2020-07-10 23:28:36 · 7082 阅读 · 0 评论 -
Android Dialog如何设置点击空白不取消
.setCancelable(false)原创 2020-07-07 13:43:41 · 2257 阅读 · 0 评论 -
Android 如何去掉RecyclerView滑动上下阴影
android:overScrollMode="never"<android.support.v7.widget.RecyclerView android:id="@+id/rv_search_one" android:layout_width="match_parent" android:layout_height="match_parent" android:overScrollMode="never" />原创 2020-06-28 09:09:46 · 1770 阅读 · 0 评论 -
Android ScrollView与RecyclerView滑动冲突
<android.support.v7.widget.RecyclerView android:id="@+id/recycler_confirm" android:layout_width="match_parent" android:layout_height="wrap_content" android:nestedScrollingEnabled="false" />解决ScrollView与RecyclerView滑动冲突的思路很简单,就是去..原创 2020-06-27 12:30:09 · 617 阅读 · 0 评论 -
Android NavigationView(侧滑菜单)
在项目中用到了侧滑菜单功能,由于用的少,所以很多功能都不会用,比如获取侧滑菜单控件id。其实谷歌没有提供这个方法,可是有时候我们需要用到,比如显示隐藏功能,今天我就来和大家分享最新研究成果图片来自网络,知道什么意思就行。显示或隐藏组(group):navigationView = (NavigationView) findViewById(R.id.navigationview);navigationView.getMenu().setGroupVisible(R.id.group_sh原创 2020-05-08 19:01:33 · 457 阅读 · 0 评论 -
Android RadioButton 如何让文字在左边,圈圈在右边
RadioButton 如何让文字在左边,圈圈在右边在xml文件中RadioButton控件上添加如下属性:android:layoutDirection="rtl"android:textDirection="ltr"原创 2020-04-29 19:41:51 · 1566 阅读 · 1 评论 -
Android EditText
<EditText android:id="@+id/ev_login_pwd" // id style="@style/AddProActivityStyle" //样式 android:layout_width="match_parent" // 宽 android:gravity="center_v...原创 2020-04-27 14:47:02 · 155 阅读 · 0 评论 -
Android 大神带你分分钟学会kotlin
kotlin 定义变量的语法为: var/val name:Type (关键字 类型名称:类型)var 关键字是 variable 的简称,表示该变量可以被修改val 关键字是 value 的简称,表示该变量一旦赋值后不能被修改实体类的生成:data class UserBean(val code:String,val name:String,val pws:Stri...原创 2020-03-18 14:56:45 · 378 阅读 · 0 评论 -
URI与Uri的区别
在实际项目中经常会用到Uri,那么你们有没有注意到有时候会用到大写的URI,那么你们知道他们有什么区别吗?URI属于java包里的。Uri属于android包里的,URI是final类对,就是这么简单。...原创 2020-03-05 18:02:19 · 507 阅读 · 0 评论 -
android如何获取文件夹中文件
android使用File类遍历文件夹、读取文件夹一.读取文件夹 1 有时候,我们需要读取一个文件夹中所有的文件。 2 首先,在D盘创建了一个文件夹alsp,然后在这个文件夹下创建多个文件 3 代码如下图所示: File sceneFile = new File("D:\\alsp"); File[] files = sceneFile.li...转载 2020-02-29 00:47:40 · 1467 阅读 · 0 评论 -
Android 判断程序是否第一次启动
关键代码:SharedPreferences setting = getSharedPreferences("qidongcishu", 0);boolean first = setting.getBoolean("FIRST", true);if (first) {// 第一次则跳转到欢迎页面 setting.edit().putBoolean("FIRST", false)...原创 2020-02-24 14:28:54 · 387 阅读 · 0 评论 -
Android 如何获取手机的厂商、型号、Android系统版本号、IMEI、当前系统语言
public class SystemUtil { /** * 获取当前手机系统语言。 * * @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN” */ public static String getSystemLanguage() { return Locale.getDefau...原创 2020-02-19 00:47:04 · 1225 阅读 · 0 评论 -
java 揭开正则表达式的神秘面纱
使用方法,请参考 《揭开正则表达式的神秘面纱》http://www.regexlab.com/zh/regref.htm注意:在安卓中使用时比如匹配数字\d,必须要双斜杠,\\d,因为在AndroidStudio中\d是非法转义字符,双斜杠才是合法的。...原创 2020-02-13 23:43:37 · 192 阅读 · 0 评论 -
Android开发,如何下载更新apk
思路是:获取服务器最新版本,和手机当前版本比较,大于当前版本就下载更新,否则就什么都不做具体思路请参看我另一篇博客:https://blog.youkuaiyun.com/yijiaodingqiankun/article/details/83271042//获取手机中APP当前版本public int getVersion() { try { //获取包管理...原创 2020-02-05 22:38:16 · 1006 阅读 · 0 评论 -
Android 如何获取版本号
try { //获取包管理器 PackageManager packageManager = getPackageManager(); //显示安装包信息 PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0); //获取版本名称 String ver...原创 2020-01-18 22:07:15 · 432 阅读 · 0 评论 -
Android VideoView的一些坑
假如你的视频播放控件用的是VideoView,你需要在清单文件中,播放的activity配置android:configChanges="orientation|screenSize"android:screenOrientation="sensorLandscape"<!-- unspecified,默认值,由系统决定,不同手机可能不一致 --><!-- l...原创 2020-01-14 09:53:42 · 1183 阅读 · 0 评论 -
Android Intent
Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”。目标组件一般要通过Intent来声明自己的条件,一般通过组件中的<intent-filter>元素来过滤。Intent在由以下几个部分组成:动作(action),数据(data),分类(Category),类型(Type),组件(Component),和扩展信息(Ex...原创 2020-01-12 21:43:51 · 814 阅读 · 0 评论 -
Android 如何解析<p></p>类似这种标签中的数据
json串"context":"<p>2019.11.12北京门店宿舍检查结果公布</p><p><imgsrc="/ueditor/jsp/upload/image/20191112/1573554453343096382.png"title="1573554453343096382.png"alt="blob.png"/></p>...原创 2019-12-05 17:34:38 · 1501 阅读 · 0 评论 -
Android MagicIndicator指示器+ViewPager
MagicIndicator指示器 是新版studio中的控件,替代原来的Tablayout,功能是一样的。使用方法:1、导依赖 在APP gradle中添加//指示器implementation 'com.github.hackware1993:MagicIndicator:1.5.0'在项目中添加如图指示器依赖添加完同步一下。2、在xml中添加控件<...原创 2019-11-25 16:37:54 · 1321 阅读 · 0 评论 -
Android 如何保存实体类
//保存实体类sharedPreferences = getSharedPreferences("housingItem",MODE_PRIVATE);SharedPreferences.Editor edit = sharedPreferences.edit();edit.putString("housingItem",new Gson().toJson(housingItem));e...原创 2019-11-22 16:04:44 · 1312 阅读 · 0 评论
分享