AlertDialog不显示文字
问题描述在自己小米5S安卓6.0上测试,发现弹框只有按钮没有文字,title和message都不显示,但是位置还是预留了的,很奇怪。
解决办法:123456789101112AlertDialog.Builder builder;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { builder = new AlertDialog.Builder(mContext,R.style.Theme_AppCompat_Light_Dialog_Alert);}else { builder = new AlertDialog.Builder(mContext);}mDialog= builder.setTitle("需要开启一些权限") .setMessage("因为加入了语音识别,所以需要获取一些手机状态、定位信息等权限,麻烦您通过一下") .setPositiveButton(getString( ...
Retrofit处理https请求
问题描述一些通过CA认证的,https是可以直接访问的,但一些自签名证书,用retrofit直接访问则会走到onFailure里,错误信息是无法通过证书验证。
onFailure: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.比如下面这样。
12345678910111213141516String baseUrl = "https://kyfw.12306.cn/";OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();Retrofit retrofit = new Retrofit.Builder().baseUrl(baseUrl).client(clientBuilder.build()).build();HttpsInterf httpsInterf = retrofit.create(HttpsInterf.class);Call<Re ...
利用hexo搭建博客
下载之前在公司搭过,家里电脑一直没写过东西,就重新弄了下,留个步骤在这里,备查。
下载nodejs,并安装。
下载git,并安装。
安装
3bc004a (init local)OK,开始安装hexo,官网。
1234$ npm install -g hexo-cli$ hexo init <folder>$ cd <folder>$ npm install
依次安装,完成后,会出现一些文件夹,可以在config.yml里进行一些设置,具体自己去官网看。
12345678.├── _config.yml├── package.json├── scaffolds├── source| ├── _drafts| └── _posts└── themes
source就是资源,文章都是放在_posts下面的,themes是放主题的。$ hexo init [folder] 新建一个网站$ hexo g 就可以生成网页文件了$ hexo s 启动服务器,默认为 http://localhost:4000/有的时候4000端 ...
在杀死进程后,如何收到广播呢?
先说结论:3.1之前,可以。3.1之后,系统广播不可以。自定义广播可以。
原因:在3.1之后,系统的package manager增加了对处于“stopped state”应用的管理,所谓“stopped state”就是说该app从未运行过 或 运行过但是现在停止运行了同时系统增加了2个Flag:FLAG_INCLUDE_STOPPED_PACKAGESFLAG_EXCLUDE_STOPPED_PACKAGESgoogle在3.1之后给所有的广播都默认加上了FLAG_EXCLUDE_STOPPED_PACKAGES,所以在进程没了的情况下,是收不到广播的。
但是自定义广播的话,我们可以
1234Intent brIntent = new Intent();brIntent.setAction("uu");brIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);sendBroadcast(brIntent);
这样手动添加一个flag,就可以了。所谓葫芦娃保活措施就可以这么搞起来
ImagView播放动画的几种方式
比如这个,总共77帧。下面对比三种方案
方案一:
像这样把每一帧图片放进animation-list
1234567<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/shenlie76" android:duration="83"/> <item android:drawable="@drawable/shenlie77" android:duration="83"/> <item android:drawable="@drawable/shenlie01" android:duration="83"/> ..... </animation ...
ScrollView嵌套Recyclerview
老问题了,以前用一些别的方式解决了比如linearlayout,比如listview的type,比如footview之类的
但这次的需求不太一样
上面是一个recyclerview全部显示,滑到底了,下面一个“今日推荐”,再下面一个资讯类的recyclerview有分页功能,滑到底了加载下一页。
思路就是让recyclerview不能滑动,滑动交给外层的scrollview,将recyclerview替换成下面这个
1234567891011121314151617public class NoScrollRecyclerView extends RecyclerView { public NoScrollRecyclerView(Context context) { super(context); } public NoScrollRecyclerView(Context context, @Nullable AttributeSet attrs) { super(context, att ...
Rxjava的interval操作符
有个需求重复发送,当然用timer、handler都行啦,不过要优雅还是得用rxjava啊
小demo,一个progressDialog进度条递增,涨到100,进度条消失,如下所示
12345678910111213141516171819202122232425262728293031private ProgressDialog pd; private void download() { if (pd == null) { pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setTitle("download new version"); pd.setProgress(0); pd.setCanceledOnTouchOutside(false); } ...
动态更改桌面app图标
清单中里的设置
123456789101112131415161718192021222324252627<activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> <activity-alias android:name=".maoyu" android:enabled="false" android:icon="@mipmap/maoyu" android:label="maoyu" android:tar ...
6.0动态之后获取权限
在各类流氓肆虐的安卓生态环境中,6.0之前是只要一安装app就能获取到所有需要的权限了。
6.0之后,谷歌将权限分成了两种,一种普通权限,跟以前一样,AndroidManifest.xml中声明了就可以用了
另一种是危险权限,在你的项目compileSdkVersion和targetSdkVersion均>=23的时候,这一类权限不仅需要在清单中声明,而且要在使用的时候向用户申请才行。如果还像6.0之前那样只是声明一下的话,分分钟崩给你看T.T~
123456java.lang.SecurityExceptiongetDeviceId: Neither user 10204 nor current process has android.permission.READ_PHONE_STATE...}1 java.lang.RuntimeException:Unable to start activity ComponentInfo{com.aidebar.d8alarmclock/com.aidebar.d8alarmclock.activity.Mai ...
滑动回弹与内层listview的滑动冲突
需求:
1、随着下拉,view发生位移,松开回弹到原来的位置
2、内部的listview可以正常的上下滑动
3、listview滑到顶部的时候,继续下拉,则是拉动整个外部view,并且松开回弹
这3个需求就会造成事件冲突,那么处理方式就是:listview不是初始状态就是listview自己处理事件,listview还原到了初始状态,外部view处理下拉回弹事件。
需求一个一个的实现,首先第一个下拉回弹
因为里面还要套一个listview,所以我们自定义一个view继承自viewGroup,这里选择的是LinearLayout
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263package com.aidebar.demo;import android.content.Context;import android.util.AttributeSet;import android.util.Log ...