android
文章平均质量分 71
南郭竽
这个作者很懒,什么都没留下…
展开
-
android: Preferences DataStore 和 Proto DataStore use guide
代码】android: Preferences DataStore 和 Proto DataStore use guide。原创 2022-08-12 15:21:46 · 812 阅读 · 0 评论 -
android/Java NoClassDefFoundError 异常的出现及解决
这个异常出现的原因就是没找到对应的类。出现的场景:app-> a.jar -> b.jar :比如 App 里面调用了 a.jar 的东西,然后 a.jar 里面又调用了 b.jar的东西。在 android studio 里面, 都是通过 gradle 的 implemetation ‘xxx’ 的方式引入的。这时候就会发生 NoClassDefFoundError 的异常。(这个问题解决方案就是 在 App里面也去引用一下 b.jar. @ 考虑到编译打包优化的问题,可能会把不使原创 2021-12-23 18:33:56 · 2931 阅读 · 0 评论 -
adnroid activity 与 fragment 共用 viewmodel
通过 共用 viewmodel 的方式可以很方便的进行 fragment 与 activity 之间的数据传递。以及 fragment 之间的数据传递。之前我在实现的时候遇到的问题是,数据无法传递,明明使用的是同一个 viewmodel 类。我当时的实现是这样的:在 activity 里面// 在 onCreate(..) {...} 里面写的MyViewModel mv = new ViewModelProvider(this) .get(MyViewMode原创 2021-09-09 22:53:30 · 4481 阅读 · 0 评论 -
android camera2 实现相机预览界面(2)
前言:在上篇 android camera2 实现相机预览界面 给出了最简单的实现。因为是最简单的实现,所以只是走通了 camera2 预览的api 调用流程。但是里面确实存在一些问题。下面就已知的问题做一个说明,并在这里给出解决方案。android camera2 实现相机预览界面 存在的问题:资源没有释放,在Activity#onStop,Activity#onDestory 里面都能看的系统打印的异常信息。不过也还好,系统只是打印了异常信息,并没有让这个进程崩溃。预览界面看的的画面被拉伸变原创 2021-09-05 22:37:39 · 648 阅读 · 0 评论 -
android camera2 实现相机预览界面
Android camera2 api 在 Android5.0 的时候发布的,貌似。比起之前的 camera, 使用上复杂了很多。这里给出最简单的实现。import android.Manifest;import android.content.Context;import android.content.pm.PackageManager;import android.graphics.ImageFormat;import android.hardware.camera2.Camera原创 2021-06-27 13:42:23 · 1030 阅读 · 1 评论 -
android : marqueeText 实战
先看效果,再看实现。好吧,由于视频转 gif ,导致看起来特别的快。实际上比较慢的。不过从视频上面也能看的出来,二者的速度是差不多的。上面一个是 自定义的,最下面的是使用 原生TextView设置跑马灯效果来做的。为什么要自定义这个东西呢,因为 need。 看末尾,滚动一遍之后,要在末尾加上...这样的。说一下实现思路:本身是一个 FrameLayout,里面至少有一个TextView用于显示内容的。如果需要滚动显示,就一共有两个TextView在里面。内容是放在第一个TextView里面的原创 2020-07-07 01:51:37 · 502 阅读 · 0 评论 -
java 字符串排序
字符串排序需求如下: 给联系人排序, 按照姓名来排序. 要求小写字母排前面,大写字母排后面.看到这个,我脑海里预想的排序结果是这样的[aaa,aab,doc,zz,Apple]也就是说 z 是大于 A 的,在这种需求下.但是,我看到为手机联系人的排序不是这样的,是a > A > b 的这种效果,而不是之前预期的 a < b < .. < z < A < B .. < Z的这种效果.当然,具体要什么效果不重要,重要的怎么去实现.为了装比,我实现原创 2020-05-18 21:55:26 · 2747 阅读 · 0 评论 -
android: LiveData的一点注意事项
LiveData里面设置的数据貌似不能被清空。不能将其看做一个容器,没有对应的remove(element)的方法。背景:Activity 里面有一个以上的 Fragment, 其中一个,叫做PassiveFragment。这个Fragment 一般不会显示出来,只有两种情况下回显示出来:1. 用户点击了其他Fragment的某些按钮。2. 或者收到某些系统事件,比如WIFI断开这种事件...原创 2020-04-04 20:52:06 · 1931 阅读 · 0 评论 -
Segmentation fault (core dumped)
c++ 中经常出现 这个错误[ Segmentation fault (core dumped) ],很类似java中经常出现的空指针异常。其实,c++ 的这个错误,很多时候就是空指针异常。下面看一段代码:int main(){ int a = 13; int b = 7; const int LENGTH = 9; // c++ 中的空指针,及显示...原创 2019-12-20 11:44:43 · 593 阅读 · 0 评论 -
android viewpager2+tablayout+ConstraintLayout的坑
viewpager2 出来有一段时间了,不过好像还没有正式版。决定尝试一下。使用要先导入依赖:implementation 'androidx.viewpager2:viewpager2:1.0.0-rc01'implementation 'com.google.android.material:material:1.2.0-alpha01' // 这个不是必要,但是要结合 tablayo...原创 2019-11-10 20:26:09 · 2820 阅读 · 5 评论 -
android:自定义横向滑动的 ViewGroup
效果图:大概就是这样子的,然后可以左右滑动。原来是想做成ViewPager的那种效果的,但是感觉那种更不实用。这个效果很类似系统控件 HorizontalScrollView 了。关键代码还是测量,布局,触摸事件拦截,触摸滑动。完整代码:public class HorizontalView extends ViewGroup { private static final ...原创 2019-11-05 00:45:24 · 595 阅读 · 0 评论 -
android recyclerview grid 分割线
recyclerview 系统提供了默认的分割线。调用很方便。不过,这里的系统默认分割线其实只针对类似 listview/或者是横向listview这种场景去使用的。对于 gridview 模式下,或者是瀑布流模式下,使用默认的分割线就不能达到预期效果了。针对这个问题,我参考了系统默认分割线的源码,提供了一种解决方案,感觉还是蛮好用的。先看一下效果图:关键代码如下: private ...原创 2019-10-20 20:21:36 · 1205 阅读 · 0 评论 -
Android 控件:AutoCompleteTextView,MultiAutoCompleteTextView ,TimePicker ,DatePicker,Spinner 的简单使用
* 代码太easy了,就不说废话了,直接一个xml,一个Activity完事。* AutoCompleteTextView:自动匹配的编辑框;* MultiAutoCompleteTextView 自动匹配的编辑框,可匹配多个;* TimePicker 时间选择器;* DatePicker 日期选择器;* Spinner 下拉框;xml如下:<LinearLayout原创 2015-09-28 22:05:28 · 549 阅读 · 0 评论 -
android控件:WebView的初使用
* 使用WebView加载本地的html文件xml代码:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:o原创 2015-09-28 22:14:41 · 656 阅读 · 0 评论 -
Fragment与Activity之前的通信已经Fragment的生命周期
* Fragment与Activity的通信,其实我之前有写过。以及Fragment的回退,也有写过。但是这慕课网,讲解的很仔细。我就直接把他的公开源码上传了一下,以后要用到可以直接下载使用。* 资源连接:http://download.csdn.net/detail/ducklikejava/9151805* 慕课网讲解的链接:http://www.imooc.com/learn/107翻译 2015-10-01 17:48:35 · 506 阅读 · 0 评论 -
Android控件:ScrollView的使用,滑动到底部的监听
* ScrollView的滑动到 底部的监听,需要设置触摸监听。并且,需要去获取ScrollView的子控件的真实高度,已经,当前滑动的距离。已经控件在屏幕上显示的高度。* ScrollView的scrollTo及ScrollViewBy方法的简单使用。Demo很简单。首先是xml: <LinearLayout xmlns:android="http://schemas.android原创 2015-10-01 22:05:49 · 4428 阅读 · 0 评论 -
Android 控件:ViewFlipper的简单使用
* 对于ViewFlipper控件,之前我是比较陌生的,也没有去使用过。但是看了慕课网教程之后,就简单写了一个Demo,方便以后使用。慕课网讲解ViewFlipper的链接:http://www.imooc.com/video/2657/0 * Demo很简单。就是一个xml布局+一个Activity。* 首先是xml<RelativeLayout xmlns:android="htt原创 2015-10-01 19:37:07 · 571 阅读 · 0 评论 -
Android:SqliteDatabase 数据库的简单使用
其实做Android这么久还是对数据库这一块比较陌生,在实际项目中,没有搞过数据库这一块。对数据库总是有一些惧怕。不小心看到慕课网有对数据库的讲解,于是根据讲解写了一个简单的Demo。主要是熟悉一下sql语句,进行数据库的创建,表的创建,对表进行增删改查数据的操作。以及对SQLiteOpenHelper的简单使用。代码很少,且不涉及布局文件,所有的信息通过log去查看就好。首先是Activi原创 2015-10-04 11:04:34 · 1366 阅读 · 0 评论 -
Android:初窥手势识别
这里写链接内容* 对于手势识别这高大上的名词,一看就很牛叉的样子。我也没有在项目中使用过。于是,看到慕课网有相应的讲解,就根据讲解写了一个Demo,学习一下Android 手势识别的使用。 * 代码很少,也没什么说的。主要就是对几个api的使用。 * 首先是xml布局:<RelativeLayout xmlns:android="http://schemas.android.com/apk/re原创 2015-10-04 21:11:07 · 676 阅读 · 0 评论 -
Android:带你玩转Servie,子线程,与UI线程通信[导入导出]
如我所知:在Android中耗时操作不能放在主线程。这很好理解,因为UI线程需要刷新UI。如果因为你的一个耗时操作,而不能及时响应其他的交互,如按钮点击等等,就会导致UI卡顿。这样用户体验当然不好了,所以Android不允许我们在主线程做耗时操作。但是这样就给开发者带来一个必须面对的问题:如何处理子线程与UI线程的通信问题。当然,Android也给我提供了这样的机制,如AsyncTask,Hand原创 2015-10-25 01:52:39 · 997 阅读 · 0 评论 -
android:Spinner 设置收起以及展开的字体大小
android:Spinner 设置收起以及展开的字体大小/** * Set the list of labels on a reminder spinner. */ private static void setReminderSpinnerLabels(Activity activity, Spinner spinner, ArrayList<原创 2017-03-13 12:36:18 · 4572 阅读 · 0 评论 -
android:ViewPager的无限多页数的设置
比如日历中,就会需要无限多页数的左右滑动。如何实现?难道要准备一个无限长的List<ItemView>?那样会太占内存了。而且,也不可行。 改进如下: 可以准备一个无限长的List<ItemBean>里面存放的是每页需要显示的数据。而ItemView不要去管,在预加载中去创建,在回收中去移除即可。详见如下示例代码: private void setViewPager() {原创 2017-05-24 09:50:30 · 1969 阅读 · 0 评论 -
java: 正则匹配字符串中多个目标子串(贪婪匹配的模拟实现)
一个奇怪的需求,需要匹配到字符串里面的123e这样子的东西,并替换成123*e。比如3e / 21e这样子。假如目标字符串是123efg45emkd89eqq,则替换之后的字符串应该是123*efg45*emkd89*eqq。 也就是说凡是数字和e的组合全部替换成数字和*e。这里给出一个不太优雅的实现。毕竟Java的正则api不是很明朗,很多方法毫无卵用。搜关键字贪婪匹配毫无卵用!!!public原创 2017-11-28 19:53:32 · 4591 阅读 · 0 评论 -
Activity 边边角角
android:noHistory="true"属性的意义: 比如activityA.startActivity(B);;如果A设置了android:noHistory="true",就相当于:activityA.startActivity(B);activityA.finish();android:launchMode="singleTop"属性的意义: 该属性的意义就是: 假设目标t原创 2017-11-09 15:15:17 · 329 阅读 · 0 评论 -
java:List自定义排序
通过实现Comparable<T>接口,重写POJO的compareTo(T other)方法实现排序。 比如:某个List的排序需要根据其中POJO的某个字符串类型字段是否匹配特定字符串,进行降序排列:代码如下:/** * Created by cat on 2017/9/4. */public class LockInfo implements Comparable<LockInfo原创 2017-09-04 12:29:55 · 926 阅读 · 0 评论 -
android:在有EditText的Activity上,控制自动显示或者隐藏软键盘
但凡是界面上有EditText,就必然会使用到软键盘。而软键盘相关的,一向都很恶心! 假如有这样一个页面,中间是一个EditText,底部有一个按钮,如何让页面在EditText可用的时候,自动弹出软键盘;在EditText不可用的时候,不弹出软键盘? 页面可以参考android手机的锁屏界面的锁屏密码界面。 那么,如何做到有时候自动弹出软键盘,有时候不自动弹出。并且,在弹出软原创 2017-09-18 15:33:24 · 1131 阅读 · 0 评论 -
java:string2hexString 中文字符转码问题解决
java 中提供了一些字符串转码的工具类,比如:Base64,UrlEncoder & UrlDecoder。但是这些类,真的非常有局限性,转码之后的字符串,往往不能被当成文件路径识别。 于是将 字符串转成16进制的字符串就显得非常有必要了。因为16进制的字符串就是数字以及英文字母a-f组成的。所以,当成路径去解析是完全可以的。import java.io.UnsupportedEncodingE原创 2017-08-25 19:21:21 · 8523 阅读 · 0 评论 -
Android Studio 中使用Lambda
如你所知,在Android开发中现在也是可以使用 Lambda表达式了。不过是因为gradle-retrolambda的存在。尽管gradle-retrolambda的官方文档已经将使用方式讲解的很清楚了。但是很不幸的是,就是有很多比较笨的人,比如我,就没明白怎么去使用。因为我貌似是按照官网的步骤一步一步来的,但是,就是不行。好了,经过我半天的摸索,我知道怎么去在 android studio中原创 2016-04-10 19:46:44 · 1761 阅读 · 0 评论 -
Android app的混淆打包
android app的 混淆打包,详细教程见app混淆打包教程根据以上的教程,我也给我的app做了一个混淆打包,反编译之后,发现的确混淆成功,并且运行正常。我的app里面的代码比较简单,用到了第三方jar只有gson.于是我的proguard-project.txt是这样的:# To enable ProGuard in your project, edit project.propert原创 2015-12-29 18:10:35 · 926 阅读 · 0 评论 -
android-aidl 从懵逼开始
什么是aidl?aidl 能干什么?怎么用 aidl?实现一个最简单的aidl以上4个问题,前面两个我不打算展开,我相信,关于这两个问题的说明和解答,已经有无数的大神详细的讲解过了。关于后面的两个问题,是我一直关心的问题。到刚才,我解决了第四个问题,但是第三个的话,我相信,得继续深入才能更好的回答。好了,现在就开始第四个问题的实现。简单说明一下,最简单的aidl实现,不需要多个ap原创 2016-08-06 10:00:54 · 2199 阅读 · 1 评论 -
android recyclerView adapter 的 itemType的使用
RecyclerView出来已经很久了。我对于之的使用,也仅限于当成ListVieworGridView的使用。最近项目中有一个需求刚好需要用到多种item的展示。我之前使用RecyclerView 的adapter 全部使用的是hongyang/base-adapter。非常的方便。而且也提供多种item的展示的功能。但是………我并没有找到正确的使用方式。于是这回就用到了原生的RecyclerV原创 2016-12-30 21:10:36 · 5672 阅读 · 2 评论 -
深度解析android.support.v4.view.NestedScrollingParentHelper类的源码
这是一次严肃的源码分析…………….首先请看源码/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance原创 2016-09-21 18:33:02 · 2161 阅读 · 0 评论 -
android toolbar收缩的实现{局限性非常强}
关于Toolbar的使用,现在已经可以在网上搜索到很多有用的资源了。但是,真TM遗憾,没有一篇真的令我满意的。不清楚是这些人的表达能力不够,还是我的理解能力的欠缺。OK,既然逼已经装过了,那么就来分享一下我那蹩脚的实现吧。我就一句废话也不说了,先上代码吧。因为代码真的很少。我是在Activity中去实现的。代码:1/2 :public class ToolbarActivity extend原创 2016-07-10 13:58:03 · 1929 阅读 · 0 评论 -
android Item 滑动删除核心逻辑实现
Android 中滑动删除的Item,往往是一个Item的宽度比较大,超过了手机屏幕,必须滑动才能显示完全的。那么如何实现滑动?实现滑动的前提是,当前的布局宽度超过了屏幕宽度。所以,第一个问题应该是:如何写一个布局,让其宽度超过一个屏幕?这个可以直接在xml布局中完成。这里给出一个示例: <LinearLayout android:id="@+id/main_line2" an原创 2017-05-02 15:20:48 · 725 阅读 · 0 评论 -
Android:给View添加一个边框
遥想当年,其实也就是几年前,有一个需求是,需要给一个ImageView添加一个边框。我当时是非常懵逼的。嗯,其实现在也是很懵逼的。我当时在网上找了一会,貌似在hongyang的博客里面看到了,他的一篇关于自定义控件里面实现了这个逻辑。不过,当时他那个不知道是什么原因,只能绘制一半。我也是醉了,不过他也给出了解决方案。(当然,那个时候的资料各个方面也是比较少的)然后我就按照他的博客,抄抄改改,然后那原创 2016-12-08 20:20:18 · 2170 阅读 · 1 评论 -
android 常用混淆
android app混淆与打多包一直是一个麻烦。但是gradle可以帮忙打多包,比如简单配置如下即可打debug包和release包:buildTypes { release { // 混淆 minifyEnabled true // Zipalign优化 zipAlignEnabled原创 2017-03-10 15:17:07 · 489 阅读 · 0 评论 -
Android工具开发一(清除手机所有app缓存)
Android手机缓存的清理步骤 1.获取手机所有app缓存2.清理缓存3.获取所有app缓存(检查第二步是否成功)代码package com.pythoncat.clearcache;import android.content.pm.IPackageDataObserver;import android.content.pm.IPackageStatsObserver;impor原创 2016-03-22 01:11:27 · 6403 阅读 · 2 评论 -
android: 一次自绘控件的体验
一个盆友在 qq 上面给我一个截图,问我有没有见过这种效果。我一看,貌似不太难,虽然我并不熟悉自定义控件,但是网上的教程很多,于是决定实现一下。这个就是给我的截图。不是很清晰,也不完整。但是重点突出出来了。于是,我看了看 HenCoder 的教程1,决定实现一下。(当然,实现期间,也翻阅了一下其他人的博客)我实现的效果如下:大体实现贴一下:@Override p...原创 2018-06-30 23:31:53 · 380 阅读 · 0 评论 -
android 两指缩放图片 event.getActionMasked() 方法的使用
想实现一个缩放图片的效果,是那种两指触摸滑动缩放的。我并没有去重新ImageView 而是重写了View然后 调用canvas.drawBitmap的方法,然后通过matrix去实现缩放效果的。(重写ImageView会更麻烦的)这里的实现比较简单。代码如下:public class ScaleImage extends BaseView { private Matrix m...原创 2018-07-09 11:57:48 · 2205 阅读 · 0 评论 -
android Looper Message 代码分析
今天遇到一件事情,很不开心,于是决定分析一下Looper的实现。Looper 代码其实不多,只是用到了一个外部不能使用的类,然而代码难度也不是很大。下面且听我细细分析。重点关注一下我们会使用的方法,比如Looper.prepare(); Looper.loop();好的,先看一个prepare(): /** Initialize the current thread as ...原创 2018-07-10 15:41:30 · 465 阅读 · 0 评论