- 博客(68)
- 资源 (4)
- 问答 (10)
- 收藏
- 关注
原创 Android MVVM架构浅析封装
MVVM 架构相对于MVP来说其实思想上是一致的,只是MVP中的P层在MVVM中换成了ViewModel,所以MVVM的模块结构如下图(截图出自https://developer.android.google.cn/jetpack/guide)这里面的LiveData 和Room 其实都是Google一直在推的JetPack 中的组件,更多的组件大家可以去https://developer.android.google.cn/jetpack 中查看回到MVVM 在MVVM中使用ViewModel
2021-06-30 10:35:21
810
6
原创 Android 评论输入框弹窗+软键盘自动弹起
需求是输入框和软键盘一起弹出,效果图如下:可以使用Dialog 的形式,因为Dialog中如果有输入框的话在弹出软键盘后会将弹窗顶起,这样就实现了这个效果:本次使用DialogFragment 可以方便管理Dialog的生命周期代码如下:public class InputDialogForFeedBack extends DialogFragment { private Dialog dialog; private EditText editText; private
2020-12-03 17:23:17
1838
原创 Android 轮播图实现视频和图片混播
实现的思路是采用RecyclerView 的多布局,再配合PageSnapeHelper这个类实现类似ViewPager一样的效果,涉及到视频播放本次使用的是饺子播放器,也可以使用其他播放器,只要实现效果就可以布局只有一个RecyclerView 就不贴代码了在activity中初始化RecyclerView layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutM
2020-09-24 09:03:54
3854
5
原创 Android Recyclerview +RadioButton 单选列表的实现
设计图如下由于Recyclerview的复用机制,RadioButton 选择会出现错误,实现的代码如下:主要是Adapter的实现(Adapter使用的BaseRecyclerViewAdapterHelper开源封装库),public class ChineseMedicineAdapter extends BaseQuickAdapter<String,BaseViewHolder> { //用来记录每个选项单选结果,记录的结果是这样的{0=1,1=3,2=4.....}
2020-09-24 09:03:47
1795
原创 Android 吸顶布局的写法
代码如下,<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_wid
2020-09-24 09:03:41
1404
原创 Android 端录制PCM文件
语音识别功能有一项需要手机端录制pcm文件,以此记录一下,以后需要了方便复制代码如下: ExecutorService executorService; private String voicePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myAutoFile/xxx.pcm"; private File mAudioFile; private AudioRecord mA
2020-09-24 09:03:35
710
原创 Android 自定义圆弧进度条加数字动态变化的实现
效果如下:思路:一个内环圆弧和一个外环圆弧,因为有一个圆圈是在圆弧上做圆周运动,所以在画圆的时候必须要得到圆弧上的各个点的坐标,这里其实就用到了PathMeasure这个类,可以帮我们拿到这些点,在画圆弧的时候也理所应当的要使用path,然后根据外界动态的传值进行重绘就能达到动态的效果代码如下:public class ProgressPathRainbow extends View { private Paint outPaint; private Paint innerPaint
2020-09-24 09:03:18
449
原创 Android NDK Cmake学习记录
一个普通的Android 项目变成支持NDK的项目需要一些配置首先在app.gradle中需要增加一些cmake的设置,如下android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.pbph.normaltondkdemo" minSdkVersion 19 targetSdkVersion 29
2020-09-24 09:02:52
228
原创 ScrollView 嵌套地图控件 产生滑动冲突的问题
使用高德地图控件嵌套在ScrollView下面会产生滑动冲突的问题,使得地图的滑动,缩放变得不流畅,卡顿借此也温习一下事件分发过程所以在地图滑动事件的时候要屏蔽掉ScrollView的拦截事件在MapView 的外层套一层自定义容器,解决这个滑动冲突,代码如下:相关说明放在注释中/** 地图容器,,解决ScrollView 嵌套MapView 滑动冲突的问题** */public class MapContainer extends RelativeLayout { publi
2020-09-24 09:02:27
618
原创 Android 关于锁屏锁释放引起的bug
Caused by: java.lang.RuntimeException: WakeLock under-locked TestInitHeartRateActivity at android.os.PowerManager$WakeLock.release(PowerManager.java:1785) at android.os.PowerManager$WakeLock.release(PowerManager.java:1747) at ...
2020-09-17 17:19:24
913
原创 Android使用MPAndroidChart画折线图
MPAndroidChart GitHub地址https://github.com/PhilJay/MPAndroidChart一个强大的Android图表视图/图形视图库,支持直线-条形-饼-雷达-气泡-烛台图以及缩放、平移和动画。今天使用这个库生成一个折线图,先看效果图先来初始化表格属性, private void initLineChart(){ //设置线状图不显示描述 heartRateLineChart.setDescription(null);
2020-09-17 11:26:27
2601
2
原创 Android studio gradle重复依赖问题记录
导入一个滚轮的开源库以后出现gradle编译失败,报错日志如下:Duplicate class com.blankj.utilcode.constant.CacheConstants found in modules jetified-utilcode-1.26.0-runtime.jar (com.blankj:utilcode:1.26.0) and jetified-utilcodex-1.29.0-runtime.jar (com.blankj:utilcodex:1.29.0)Duplicat
2020-09-12 16:06:37
1251
原创 Android 上使用FFmpeg一些错误记录
Android studio 3.6.3libavcodec/v4l2_buffers.c:439: error: undefined reference to 'mmap64'build.gradle的版本与FFmpeg编译出的版本不一致导致minSdkVersion 19 改为minSdkVersion 21还有一些需要注意的点 引入ffmpeg的静态库,一定要注意引入的顺序一定不能出错,而且z库不能少,否则都会报错target_link_libraries(
2020-06-07 17:53:59
646
1
原创 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader错误记录
Android studio版本3.6NDK开发过程这个问题就是没有找到对应so库造成的完整的错误日志java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.pbph.ffmpegdemo-JyNw8Rk8pViQBFoHfRx06g==/base.apk"],nativeLibraryDirectories=[/data/app/com.pbph.ffmpeg
2020-05-25 17:26:01
1000
原创 adb 安装app报 Failure [INSTALL_FAILED_VERSION_DOWNGRADE]
因为某平台应用审核不通过,原因是使用adb命令无法安装应用程序然后我尝试使用adb命令重新安装一下,在Android SDK 的platform-tools 目录下右键打开Windows命令窗口adb install xxx.apk报错Failure [INSTALL_FAILED_VERSION_DOWNGRADE]原因是app 当前的versionCode 值低于当前已经安装的应用版本,所以更改一下版本就ok了...
2020-05-19 14:09:21
2026
1
原创 Android ViewFlipper 实现消息滚动
ViewFlipper 非常适合实现首页的消息上下滚动或是左右滚动,而且使用也是非常的方便首先在布局中<ViewFlipper android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/vf_msg" android:flipInterval="2500" android:i
2020-05-18 09:32:49
999
原创 记录Android EditText一些输入控制规则
1,价格输入最多保留两位,可以没小数点,也可以使用InputFilter 来设置 price.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override
2020-05-17 16:20:12
279
原创 自定义View-字母排序
做地址选择的时候的经常会用到字母筛选,如下图所示我们只实现右边的字母,字母的实现可以使用列表的形式实现,也可以自定义View来实现,本次我们采用第二种自定义View,代码如下:public class LetterSortView extends View { //一个是选中的画笔,一个是默认的画笔 private Paint defaultPaint; privat...
2020-04-09 17:35:12
216
原创 自定义View:一种侧滑效果
实现的效果如下上代码,代码中有详细说明public class SlidingMenuView extends HorizontalScrollView { // 菜单的宽度 private int mMenuWidth; private View mContentView,mMenuView; // 处理快速滑动 private GestureDet...
2020-04-08 16:03:54
177
1
原创 IntentService+Notifcation实现应用app后台下载完成后并安装(已适配8.0)
app的更新模块放在后台服务可以大大提高app的体验,采用IntentService这种google为我们封装好的用于执行服务中有网络操作的类并搭配Notification来实现一下 效果图如下:(看了一下淘宝的更新,所以就成这样的界面了,) 代码:自定义的IntentService类/** * 更新包下载安装服务 */public class UpdateService e...
2018-05-05 15:39:14
1316
2
原创 Android 列表时间轴的实现
实现的效果图如下: 实现的方式是利用recycleview的ItemDecoration这个抽象类,就是我们经常用来画分割线的的这个类, 具体如下,public class DividerItemDecoration extends RecyclerView.ItemDecoration{ // 写右边字的画笔(具体信息) private Paint mPaint;...
2018-03-17 14:30:23
2744
1
原创 thinkphp 利用cookie传递表格数据
从一个页面的表格列表(用Extjs的gridPanel组件)中获取n行数据,在执行跳转命令后,在另一个页面取到这些数据,并执行关联操作,操作完成后返回开始页面1去数据,将数组数据转化为json数据getJsonStr : function () { var me = this; var entity = me.getEntity(); v
2018-01-16 18:15:05
586
原创 Extjs 跳转页面带参数并执行查询操作的实现
如上,点击查看物流会跳转到另一个界面,且将物流单号的值传递到下一个界面,下一个界面根据物流单号自动查找到对应的信息.ok,开撸{ header : "查看物流", dataIndex : "", menuDisabled : true,
2018-01-05 14:26:07
3603
原创 Extjs 使用pagingToolbar实现gridpanel数据分页
效果展现 版本4.2 bbar : [{ id : "pagingToolbar", border : 0, xtype : "pagingtoolbar", store : store }, "-", { xt
2018-01-04 16:50:58
1123
原创 Extjs4.2 为grid行中增加超链接的实现
{header : "跟踪物流",align : "center",width : 100,menuDisabled : true,sortable : false,renderer : function (value, cellmeta, record, rowIndex, columnIndex, store) {//拿到当前物流单号var id = record.data['i
2017-12-27 17:20:50
1868
原创 Extjs 监听字段的回车键的实现
id : "edituu",colspan : 2,width : 430,labelWidth : 60,labelAlign : "right",xtype : "customfield",//自定义的字段fieldLabel : myproject.Message.Supplier,listeners : {//任何与导航相关的键(方向键、Tab键、回车键、退格键等)按下时触发
2017-12-27 17:19:38
769
原创 Extjs系列之 ArrayStore的用法
一个小巧的帮助类,用于更方便的从一个数组的数据来创建Ext.data.StoreExt.define("diy", {/*** 初始化组件*/initComponent: function () {var me = this;var entity = me.getEntity();Ext.apply(me, {header: {title: ""},width: 600,he
2017-12-27 17:18:20
1895
原创 Extjs Form表格容器的使用
FormPanel 为 form 表单提供了一个标准的容器. 本质上还是一个标准的 Ext.panel.Panel,只是自动创建了一个 BasicForm 来管理所有添加到 Panel中的 Ext.form.field.Field 对象.可以快捷方便地进行 配置以及处理 BasicForm 和 表单域.在Extjs Form中,默认的布局方式是layout: 'anchor'默认每行只显示一个控件,
2017-12-27 17:14:24
635
原创 Extjs4.2 gridPanel中的Store数据远程获取
var modelName = 'model';Ext.define(modelName,{extend : "Ext.data.Model",fields : ["id","code", "name"]});var store = Ext.create("Ext.data.Store", {autoLoad : false,model : modelName,data : [],
2017-12-27 17:11:47
1329
原创 Android ART虚拟机和Dalvik虚拟机区别
Android 从5.0开始默认使用ART虚拟机执行程序,抛弃了Dalvik虚拟机.加快了Android的运行效率,提高系统的流畅性原因是Dalvik虚拟机执行的是dex字节码,ART虚拟机执行的是本地机器码, Dalvik虚拟机有一个解释器,用来执行dex字节码, Android从2.2开始,通过JIT(Just-In-Time)进行Dalvik虚拟机的优化,将使用频率较高的字节码翻译成机器码,就
2017-12-27 17:01:12
1425
原创 ExtJS GridPannel的使用
Extjs GridPanelGrid是在客户端上显示大量的表格数据的极佳方式。它本质上是一个超级统计表GridPanel使其更容易地进行获取、排序和筛选大量的数据。Grid是由两个主要部分组成的 - 一个含有全部数据的Store和一个要进行渲染列的集合。//创建grid 也就是表格组件me.__mainGrid = Ext.create("Ext.grid.Panel", {viewConfi
2017-12-27 17:00:09
307
原创 Extjs多语言实现
Extjs 版本4.2 thinkphp 3.2.3在public 公共目录下,如下建立国际化js文件(中英文) 在myproject-lang-zh_CN.js中var myproject = {};myproject.Message = {};myproject.Message.Code = 'Code';则在Extjs的组件中引用国际化就可以使用myproject.Message.Cod
2017-12-27 16:50:16
949
原创 php如何根据条件删除二维数组中的元素
需求是在一个二维数组中,根据数组中某个元素的值是否为0来判断是否将这个元素删除$result = array();foreach ( $data as $i => $v ) {$id = $v["id"];$result[$i]["id"] = $v["id"];$result[$i]["text"] = $v["name"];$result[$i]["code"] = $v["code"]
2017-12-27 16:45:30
14059
原创 Thinkphp 多语言实现(项目实战)
下面,以Thinkphp的Controller为例进行说明(版本为3.2.3):在应用的配置目录下面的行为定义文件tags.php中(你可以在你的模块下(比如Home),也可以在Common下的Conf文件夹下进行),添加:<?php/*** Created by PhpStorm.* User: Administrator* Date: 2017/12/5* Time: 10:44*/retu
2017-12-06 16:46:09
1492
原创 Android集成阿里云旺即时通讯踩坑历程
下载云旺的demo,将demo中的OneSDK直接拷贝,作为Moudle进行依赖,具体操作就不说了,OneSDK是最新的,一定不要进行修改,进行依赖后,可能会遇到buildToolsVersion 版本不一致,换过来就行当运行在模拟器上时,却报了虚拟机oom,官方也给了解决办法,就是扩大堆内存空间,如下在build.gradle的android下dexOptions { incremental tr
2017-12-05 11:42:58
3277
原创 阿里云旺自定义消息和首次打开聊天界面自动发送消息的实现
自定义消息需要继承IMChattingPageOperateion/** * Created by great小海海 on 2017/8/23. * 自定义消息,目前有两种商品和订单 */public class ChattingOperationCustom extends IMChattingPageOperateion{ private DisplayImageOptions
2017-09-01 08:30:38
2600
2
原创 阿里云旺(即时通讯)基础使用
在App的oncreate方法中//必须首先执行这部分代码, 如果在":TCMSSevice"进程中,无需进行云旺(OpenIM)和app业务的初始化,以节省内存; SysUtil.setApplication(this); if(SysUtil.isTCMSServiceProcess(this)){ return; }
2017-08-31 14:22:27
9430
原创 Recyclerview 多布局多数据类型的处理
开场白给:醉乡民谣需求假定:有三个不同的数据请求源,每个数据源的布局方式不同,利用recyclerview的方式展示在界面上效果如下图: 本次效果采用rxjava+retrofit请求数据,将所有数据合并入一个List中,在recyclerview adapter中根据类型,进行布局的创建,并且使用了recylerview的一个setSpanSizeLookup方法,来生成不同的排列方式先看一下M
2017-08-17 11:38:21
2186
原创 ScrollView滑动到底部的监听
通过一张图直观的感受下一些scrollView.setScrollViewListener(new ScrollViewListener() { @Override public void onScrollChanged (ObservableScrollView scrollView, int x, int y, int oldx, int oldy
2017-08-16 09:16:08
1293
原创 android 集成Facebook 分享功能
开场白 依然给大脸书承接上一篇 android 集成facebook的登录功能首先分享功能 要在清单文件中添加如下内容提供者:<provider android:authorities="com.facebook.app.FacebookContentProvider{APP_ID}" android:name="com.facebook.FacebookContentProvi
2017-08-11 13:12:30
4854
3
gui-windows-1.4.0最新版
2017-01-03
android studio 3.0的报错
2018-02-28
关于WebView的js问题。。。
2017-05-01
关于webview的useragent
2017-04-30
关联了greendao的实体类实现serialiazable序列化接口的问题
2016-10-21
viewpager中fragment过多的疑问
2016-10-04
json字符串如何不报空的问题
2016-09-28
v4.jar包找不到的问题,重新导入依赖包后依然报错
2016-09-23
关于fragment添加listView的问题,
2016-09-17
eclipse中SVN连接资源库时让输入密码
2016-09-01
java面向对象概念问题
2016-07-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人