![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
楚蕊博南谭
这个作者很懒,什么都没留下…
展开
-
超长(超过70字)短信发送
运营商每次只能发送最多70个汉字的短信,超过部分则会丢失。所以当有超过70字的汉字时,发送短信的应用程序就需要使用SmsManager类中的divideMassage方法将短信切割成多条存储到集合中,然后遍历集合发送多条短信。String inputNumber = etPhoneNumber.getText().toString().trim();//从etPhoneNumber(EditText原创 2016-03-12 21:13:46 · 4020 阅读 · 0 评论 -
设置SDK Manager代理
1.打开SDK Manager 2.Tools->Options 在HTTP Proxy Server 中填入:mirrors.neusoft.edu.cn 在HTTP Proxy Port 中填入:80 在 Force https://…source to be fetched using http://…前面打上勾原创 2016-12-16 16:42:28 · 613 阅读 · 0 评论 -
判断字符串中是否含Emoji表情正则表达式
public boolean hasEmoji(String content){ Pattern pattern = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]"); Matcher matcher = pattern.matcher(content);原创 2016-12-05 11:55:55 · 32243 阅读 · 1 评论 -
解决发布测试版和正式版修改N多代码的问题
前言:有时候我们需要在手机上能同时安装测试版和正式版app,这就要求我们app的包名不同,包名不同的话,就要求我们的测试版用的第三方SDK的app key就不同,比如项目中用了极光推送,我们就要申请两个app key。 如果不借助gradle话每次手动修改包名、app key、极光server的category显然很容易弄混淆。在android studio中是通过applicationId来判断原创 2016-12-02 18:52:41 · 1572 阅读 · 0 评论 -
混淆
android studio 混淆在 proguard-rules.pro 中配置规则1.避免jar被混淆 -dontwarn com.example.** -keep class com.example.*{ ;}2.避免某个类混淆(需要些全类名) -keep class com.example.test.Demo{*;} 3.不进行优化 -dontoptimize4.不进行预校验 -d原创 2016-10-31 15:38:18 · 271 阅读 · 0 评论 -
通过注解达到setContentView和findViewById的目的
//Retention有三种策略 1.RetentionPolicy.CLASS 只在字节码起效果 2.RetentionPolicy.SOURCE 只在编译期间效果,起标识作用 3RetentionPolicyRUNTIME 运行时起作用,一般用于反射//Target表示该注解的作用域 ElementType.FIELD 表示可以作用在成员属性上 ElementType.METHOD表原创 2016-11-16 22:15:17 · 480 阅读 · 0 评论 -
Gilde加载圆形图像、加载gif图像
使用Glide绘制圆形图片 添加依赖: compile ‘com.github.bumptech.glide:glide:3.7.0’ compile ‘com.android.support:support-v4:23.1.1’ 添加网络权限(需要联网就添加): android:name=”android.permis原创 2016-10-07 22:26:47 · 992 阅读 · 0 评论 -
关于多渠道打包
这里使用的是百度统计 一、androidmManifest.xml中的配置 1.首先需要在中的application节点下配置原创 2016-10-29 18:45:10 · 257 阅读 · 0 评论 -
自定义进度条
package com.bsi.customprogressdemo;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet转载 2016-10-06 13:51:50 · 250 阅读 · 0 评论 -
判断TextView是否有内容省略
该方法必须要在TextView绘制完成后才能调用Layout layout = textView.getLayout();int lines = layout.getLineCount();if(lines > 0 ){ if(layout.getEllipsisCount(lines - 1) > 0){ //有省略 }else{ //无省略原创 2017-03-07 21:58:56 · 1767 阅读 · 0 评论 -
隐藏应用的图标,使其他应用可启动本应用
1.在manifest文件的要启动的< activity >节点的< intent-filter >里添加 < data android:host=”SplashActivity” android:scheme=”com.bsi.masapp” />这样就隐藏图标了。若要其他应用能启动该应用的话,还需再添加一个 < intent-filter >: < intent-filter >原创 2017-03-17 10:38:34 · 1110 阅读 · 0 评论 -
Gradle 修改生成apk时的文件名
android{ //....code android.applicationVariants.all { variant -> variant.outputs.all { output -> outputFileName = new File(variant.name, "运维小助手" + "_...原创 2018-04-11 20:32:42 · 1087 阅读 · 0 评论 -
AIDL入门
最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧。AIDL的数据传输支持类型有特殊要求,并非所有的数据类型都能像以往一样传递:支持数据类型如下:Java 的原生类型String 和CharSequenceList 和 Map ,List和Map 对象的元素必须是AIDL支持的数据类型; 以上三种类型都不需要导...原创 2018-02-24 15:59:06 · 232 阅读 · 0 评论 -
服务混合开启
服务开启方式有两种: 1. startService(intent) 2. bindService(intent, serviceConnection, BIND_AUTO_CREATE); 第一种:为常驻型服务,也就是服务开启后即便退出app,服务也还存在,除非进程被系统杀死,但是服务中的方法无法被应用调用。 第二种:随着开启服务组件的生命周期结束,服务也会结束,但是应用能调用服务中的...原创 2018-02-24 10:14:11 · 271 阅读 · 0 评论 -
android开发官方文档(不定时更新)
c++NDK配置: https://developer.android.com/studio/projects/add-native-code.html原创 2018-01-01 19:09:58 · 1239 阅读 · 0 评论 -
android闪光灯控制
Camera camera = Camera.open(); 1.打开闪光灯public void turnLightOn() { if (camera == null) { return; } Parameters parameters = camera.getParameters(); if (parameters == null) {原创 2017-11-30 15:57:28 · 1545 阅读 · 0 评论 -
android异常处理
编写应用时,总会有没有捕获到的异常,android应用崩溃时,默认情况下会弹出一个dialog,对于用户来说是一个很不友好的提示,那么如何捕获全局异常呢?step1:package com.bsi.crashdemo;import android.app.ActivityManager;import android.content.Context;import android.content.p原创 2017-07-26 22:03:14 · 456 阅读 · 0 评论 -
android设备导出word
本教程是通过apache的POI工具导出word,亲测在office2016上测试成功。step1: 需要的jar包:commons-codec-1.10.jar、commons-collections4-4.1.jar、commons-logging-1.2.jar、log4j-1.2.17.jar、poi-3.16.jar、poi-scratchpad-3.16.jarstep2: 首先需要原创 2017-07-15 12:51:23 · 693 阅读 · 1 评论 -
蓝牙基础知识
使用蓝牙的时候需要申请的权限 1.获取蓝牙管理对象BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); //如果不存在该设备不存在蓝牙设备则 返回null2.判断蓝牙是否正在运行boolena isEnable = bluetoothAdapter.isEnabled() //正在原创 2017-05-30 11:48:07 · 304 阅读 · 0 评论 -
Glide加载带边框的图片
转自:http://ioclub.info/topic/572b19899639c60610c2bebepackage com.ioclub.utils.glide;import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import androi转载 2016-10-27 15:03:58 · 5617 阅读 · 0 评论 -
自定义Toast
Toast toast = Toast.makeText(SecondActivity.this,"test",Toast.LENGTH_SHORT); toast.setGravity(Gravity.CENTER,0,0);//设置Toast的位置 LinearLayout toastLayout = (LinearLayout)t原创 2016-10-26 20:54:07 · 253 阅读 · 0 评论 -
dp、px、sp之间的转换
//px转换成dip public static int px2dip(Context context ,float pxValue){ float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue/scale + 0.5f); }//dip原创 2016-06-14 20:25:39 · 1013 阅读 · 0 评论 -
SDKManager配置
1.SDK Manager中打开 Tools—>Manage Add-on Sites…—>User Defined Sites 2.New …输入:http://android-mirror.bugly.qq.com:8080/android/repository/addon.xml 3.打开SDK Manager的Tools –>Options,HTTP Proxy Server 和 HTT原创 2016-07-12 21:48:00 · 1002 阅读 · 0 评论 -
帧动画
动画anima.xml文件(在drawable目录下): oneshot表示执行次数,当为false时则表示只执行一次,当为true时表示循环执行<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false"> <item android:drawable=原创 2016-06-14 16:10:00 · 286 阅读 · 0 评论 -
ScroolView嵌套ListView
public void setListViewHeighBasedOnChildren(ListView listView){ //获取listView 对应的adapter ListAdapter listAdapter=listView.getAdapter(); if(listAdapter==null){ return原创 2016-06-12 14:20:58 · 1157 阅读 · 0 评论 -
通过WindowManager实现可拖拽的View
可用于来去电归属地显示: WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); View view = View.inflate(this, R.layout.text_view, null); WindowManager.Layo原创 2016-06-11 18:37:59 · 787 阅读 · 0 评论 -
popupWindow的简单使用
//本例是以点击ListView中的条目时在对应的条目位置弹出popupWindow//获得popupWindow的充气视图View contentView = View.inflate(context, R.layout.popup_app_manager, null);//创建PopupWindow对象//参数1:要弹出的View//参数2:width 宽//参数3:height高Po原创 2016-06-11 13:48:19 · 357 阅读 · 0 评论 -
ViewHolder的高级使用
通用ViewHolder工具类: 用法:在需要创建ViewHolder的地方(一般是Adapter中的getView方法内)通过: ViewHolder viewHolder =ViewHolder.getViewHolder(convertView,context,R.layout.itemLayout);//如获取TextView的控件 TextView textView = viewHo原创 2016-05-26 12:38:25 · 673 阅读 · 0 评论 -
获取手机内存大小以及获取SD卡内存大小
获取手机的内部总容量和可用容量:File path = Environment.getDataDirrectory();//获取手机的/data目录StatFs stat = new StatFs(path.getPath());//获取文件系统的状态long blockSize = stat.getBlockSize();//每个block 占字节数long availableBlocks原创 2016-03-13 23:56:55 · 515 阅读 · 0 评论 -
Android设计模式--Builder模式
假设我们有一个Dog类,我们通过Dog类来创建很多的Dog,并且这个Dog有很多属性,如:name,sex,age,weight并且允许这些属性可以设置为nullpublic class Dog { private String name; private String sex; private int age; private float weight; p原创 2016-06-20 12:03:25 · 209 阅读 · 0 评论 -
OkHttp简单用法
//get方式请求//构建OkHttp对象OkHttpClient client = new OkHttpClient();//封装请求Request request = new Request.Builder() .url("http://xxxxxxx.com") .get()//表示get方式请求原创 2016-06-20 15:20:51 · 256 阅读 · 0 评论 -
调用系统应用
//打开图片库 Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent,121);//调用系统发短信界面 Intent intent = new Intent原创 2016-10-15 22:21:03 · 239 阅读 · 0 评论 -
监听软键盘的收起和弹出
原理:android 没有提供原生的API来监听软键盘的收起和弹出,但是我们可以通过监听根布局的变化来判断软键盘的改变状态 1.需在manifest文件中的activity节点配置android:windowSoftInputMode=”adjustResize”,(注可以有多个属性,但是至少有adjustResize) 2.给该activity中的根布局添加idpublic class Mai原创 2016-09-28 10:24:11 · 1170 阅读 · 0 评论 -
单例Toast
public class MainActivity extends AppCompatActivity { int i = 0; private static Toast mToast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedI原创 2016-09-25 20:41:00 · 611 阅读 · 0 评论 -
AsyncTask简单使用(下载图片)
package com.example.myasynctask;import java.io.BufferedInputStream;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import java.util.Observable;import android.app.Activi原创 2016-09-16 16:29:32 · 425 阅读 · 0 评论 -
AsynckTask的简单使用(更新进度条)
package com.example.myasynctask;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.os.SystemClock;import android.util.Log;import android.widget.Progres原创 2016-09-16 16:24:44 · 609 阅读 · 0 评论 -
去掉EditText默认获取焦点
在editText的父布局中添加以下属性 android:focusable=”true” android:focusableInTouchMode=”true”原创 2016-07-25 16:28:30 · 265 阅读 · 0 评论 -
字符串的那些事
String str0 = “ab”; String str1 = “abc”; String str2 = “abc”; String str3 = “ab” + “c”; String str4 = str0 + “c”; String str5 = new String(“abc”); String str6 = new String(“ab”) + “c”; 编译器会将str1原创 2016-07-28 23:26:38 · 244 阅读 · 0 评论 -
将应用变成库(AndroidStudio)
1.在build.gradle中把 apply plugin: ‘com.android.application’ 改为apply plugin: ‘com.android.library’ 2.在build.gradle中删除applicationId “xxx.xxx.xxx” 3.删除androidmanifest中的application节点原创 2016-07-06 21:11:45 · 463 阅读 · 1 评论 -
数字自动增长的TextView,可以避免float精度问题和长度
package com.bsi.myapplication; import android.animation.TypeEvaluator; import android.animation.ValueAnimator; import android.content.Context; import android.util.AttributeSet; import java.math.B...原创 2018-06-10 15:24:32 · 556 阅读 · 0 评论