Android
文章平均质量分 50
try_zp_catch
这个作者很懒,什么都没留下…
展开
-
Android 自定义view中Path画线不显示问题
遇到一个问题:path.lineTo();死活不显示,但是直接canvas.lineTo就没问题;官网看了好久,都感觉没问题啊;最后发现:如果只是一条直线,需要设置Paint.Style.STROKE;因为Paint.Style.FILL是需要一个面积才能画出来;记一下,长长记性。...原创 2021-03-10 15:23:28 · 738 阅读 · 0 评论 -
Android APP启动优化
开机启动流程开机->BootLoader(引导芯片)->LinuxKernel(init.rc)->init进程id为1->zygote进程->JVM,SystemServer等->Binder线程池/SystemServiceManager/ActivityManagerService其他各种服务->LauncherAPP启动分为冷/热/暖,三种启动方式冷启动:程序从头开始,系统没有为该程序创建进程。一般场景:程序安装后的第一次启动;应用程..原创 2021-01-26 15:44:17 · 108 阅读 · 0 评论 -
获取汉字的首字母
static final int GB_SP_DIFF=160; // 存放国标一级汉字不同读音的起始区位码 static final int[] secPosValueList = { 1601, 1637, 1833, 2078, 2274, 2302, 2433, 2594, 2787, 3106, 3212, 3472, 3635, 3722, 3730, 3858, 4027, 4086, 4390, 4558, 4684, 4925, .转载 2021-01-07 16:27:25 · 708 阅读 · 0 评论 -
Clang编译FFmpeg常见问题
关于ndk编译ffmpeg的教程,基本上都是使用gcc来编译,而ndk从r18b开始就正式移除gcc来,因此很有必要研究下clang编译ffmpeg,在此过程中遇到了不少奇怪的问题。系统:macosffmpeg版本:4.1.3ndk版本:r19c编译器:clang1、命令找不到错误信息: ./build_android.sh: line 18: --enable-shared: command not found./build_android.sh: line 20:转载 2020-12-29 18:51:44 · 2058 阅读 · 0 评论 -
Android NDK 新版本打包打不进so库的问题
之前都是直接创建直接打包就可以了,昨天重新搞这个的时候发现一打开就报错,log显示找不到native方法,然后发现apk里边根本没有so库。。。接着就是漫长的试错。。。然后我发现暂时用这一套配置可以使用,具体原因现在还不知道,但是用这一套配置可以打进so库。local.properties:ndk.dir=/Users/xxx/Library/Android/sdk/ndk/21.1.6352462 sdk.dir=/Users/xxx/Library/Android...原创 2020-12-26 10:38:00 · 902 阅读 · 0 评论 -
Android adb查看手机CPU型号
adb shell getprop ro.product.cpu.abi原创 2020-12-25 17:04:59 · 5044 阅读 · 0 评论 -
Android 仿微信拍摄按钮
自己写了一个另外版本,感觉不是很好,借鉴了一下老哥的代码,优化了一下,感谢老哥,尾部附链接。简单粗暴,没有太多扩展,如果需要可以写一些扩展,我只是实现出来懒得扩展了,因为就是自己写着玩的,没有什么需求。话不多说,直接上代码:public class VideoTakeButton extends View { private static final String TAG = "VideoTakeButton"; /** * 外边框半透明圆...原创 2020-12-24 12:27:46 · 348 阅读 · 0 评论 -
Android 项目中使用NDK简易步骤(MK版)
创建一个Android项目;在src/main下创建ndkBuild文件夹;在ndkBuild文件夹下创建hello-ini.c文件;写代码 :#include <jni.h>int test(){ return 123;}JNIEXPORT jint JNICALLJava_com_yogurt_ndk_1test_12_13_11_MainActivity_nativeTest(JNIEnv *env, jobject thiz) { re..原创 2020-11-06 14:31:29 · 215 阅读 · 0 评论 -
Android 给图片加文字水印
//图片上绘制文字 private Bitmap drawTextToBitmap(Bitmap bitmap, String text, Paint paint,int paddingLeft,int paddingTop){ Bitmap.Config bitmapConfig = bitmap.getConfig(); paint.setDither(true);//获取更清晰的图像采样 paint.setFilterBitmap(true);/原创 2020-10-22 11:50:25 · 473 阅读 · 0 评论 -
Android 竖向/纵向滑动ViewPager
VerticalViewPagerpublic class VerticalViewPager extends ViewPager { public VerticalViewPager(@NonNull Context context) { super(context); } public VerticalViewPager(@NonNull Context context, @Nullable AttributeSet attrs) { s转载 2020-06-29 14:51:21 · 2102 阅读 · 0 评论 -
Android 导出不含Build.Config的aar
在app/build.gradle中加入android { ... packageBuildConfig(false) ...}1、Build->Make Module (Your module);2、Gradle->(Your module)->other->assembleDebug/assembleRelease原创 2020-06-04 11:37:06 · 1529 阅读 · 0 评论 -
Android ViewPager实现无限轮播
今天我们主要说的是无限轮播,重点在无限;话不多说直接上代码:class BannerAdapter( var mContext: Context,var mViewPager: ViewPager?) : PagerAdapter() { private val mData by lazy { ArrayList<Bean>() } fun setData(list :ArrayList<Bean>){ ...原创 2020-05-12 17:57:23 · 378 阅读 · 1 评论 -
Android 查看Android证书指纹信息
原文地址:查看Android证书指纹信息,感谢大神用途我们在高德、百度等这些第三方SDK的集成和注册时,都会让我们提供包名或者证书指纹(MD5、SHA-1、SHA-256)等信息,这些信息如何获取呢?有多种方法。准备工作安装好JDK。最好配置好环境变量(为啥要配置环境变量我就不解释了,反正大佬们都懂,小白们起码也知道怎么配,都是基本功了),这样用起来更方便。我们主要用的是jdk的bin目录中的keytool工具。动手情况1:证书在手这种情况下,我就是开发者,我有key.转载 2020-05-11 11:10:33 · 2276 阅读 · 0 评论 -
Android MVP格式记录
abstract class MvpActivity<P : BasePresenter<*, *>> : BaseActivity(), IView{ protected var mPresenter: P? = null protected abstract fun getPresenter(): P override fun initM...原创 2020-03-12 18:09:40 · 169 阅读 · 0 评论 -
Android 选择联系人
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);startActivityForResult(intent, REDE_CONTACT);12上述方式打开联系人界面在小米手机中会出现一个选择页面过渡环节, 有的机型甚至会直接打开文件管理页面.采用这种方式可以直接...转载 2020-03-11 16:26:45 · 780 阅读 · 0 评论 -
Android retrofit上传文件到服务器接收
Android : String url = ""; TreeMap<String, RequestBody> paramsMap = new TreeMap<>(); RequestBody paramsBody = RequestBody.create(MediaType.parse("multipart/for...原创 2020-03-09 14:16:13 · 572 阅读 · 0 评论 -
Android 使用Retrofit下载文件并实现进度监听
1.前言最近要做一个带进度条下载文件的功能,网上看了一圈,发现好多都是基于OkHttpClient添加拦截器来实现的,个人觉得略显复杂,所以还是采用最简单的方法来实现:基于文件写入来进行进度的监听。2.实现步骤2.1 设计监听接口根据需求设计一下接口:public interface DownloadListener { void onStart();//下载开...转载 2020-03-05 11:24:09 · 884 阅读 · 2 评论 -
Android SharedPreferences工具类
融合了工具类和枚举,话不多说,直接上代码:public enum SPCode { USERNAME("username","未登录","用户名"), IS_LOGIN("isLogin",false,"是否登陆"); SPCode(String key, String defaultValue, String description) { thi...原创 2019-11-29 17:26:33 · 182 阅读 · 0 评论 -
Android 倒计时的实现
很多时候会用到倒计时,比如欢迎页面。这里简单的做一个倒计时的实现,具体细节不在多赘述。最要的功能就是Handler每隔一秒发送一个消息,通知主线程更新UI,仅此而已。public class WelcomeActivity extends BaseActivity implements View.OnClickListener { private Handler原创 2017-04-26 14:09:00 · 318 阅读 · 0 评论 -
Android ListView中实现商品的倒计时
这种在ListView中实现倒计时其实是一种思路的转换,如果在适配器中开启Handler,会使得没一个项都开启一个新的线程,这样不但会占用很大的内存,还可能是直接报错,所以我们可以换一种思路,在主页面防止数据的时候设置一个线程,让他每一秒更新一下数据,然后通知适配器更新UI,这样就使得和一个倒计时实现是一样的。1,主页面代码public class MainActivity ext原创 2017-04-26 15:14:03 · 415 阅读 · 0 评论 -
Android Studio导入第三方库(SlidingMenu)教程
注意:本教程针对像SlidingMenu这样使用Android Studio结构的第三方库。开始:第一步,去GitHub下载SlidingMenu (下载地址:https://github.com/jfeinstein10/SlidingMenu),下载下来在你的电脑上应该是这样样子的:第二步,建立一个Android Studio项目:第转载 2017-04-26 18:02:59 · 274 阅读 · 0 评论 -
Android 几种加密解密的方法(仅代码)
1.Base64编码:byte[] encode = Base64.encode(str.getBytes(), Base64.DEFAULT);new String(encode)解码:byte[] decode = Base64.decode(result, Base64.DEFAULT);new String(decode)2.URLEncoder编码:原创 2017-05-17 10:53:18 · 2233 阅读 · 0 评论 -
Android Application中的OnCreate方法执行两次
在Application中开启了一个子线程,但是每次子线程都会执行两次,非常郁闷。这时候看它执行两次的时候就去验证他的大方法是否执行了两次,然后发现线程创建了两次;再看他的大方法执行了几次,它的大方法就是OnCreate方法,虽然我觉得它不会执行两次,但是我们一定要进行排除,否则任何一种情况都会出现。所以打了个Log发现OnCreate方法也执行了两次。这就找到根由了,所以在网上找转载 2017-05-23 16:26:25 · 6194 阅读 · 0 评论 -
Android 网页启动App并传值
在很多时候会使用到在网页中调起App,并且传值。其实很简单,只要在调起的App的目标Activity的配置文件下加上以下代码: 这里有一点要注意,个人总结出来的结论,如果你要调起的页面是是这个App的启动页面的话,可能会导致这个App的图标找不到,具体什么原因我也不清楚,但是在使用的时候原创 2017-05-23 17:16:12 · 1476 阅读 · 0 评论 -
Android 接口回调传值和执行方法
介于很多地方会使用到接口回调,有的是事件做出改变后需要通知某些地方刷新数据,有的是需要传递某些改变的值,所以接口回调非常有掌握的价值,在这里直接把代码贴出来,方便使用。1、接口回调执行方法在事件执行的ChangeActivity或者是ChangeFragment中: //刷新数据 private static refreshOnDisplayListener原创 2017-06-06 15:07:35 · 3789 阅读 · 0 评论 -
Android Sensor的简单调用
SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE); List allSensors = sm.getSensorList(Sensor.TYPE_ALL); for (Sensor s : allSensors) { String tempS转载 2017-07-03 15:08:08 · 586 阅读 · 0 评论 -
Android 图片和字节相互转换
还没想到用在哪,但是觉得应该会用得到,所以就记一下。将图片转换成字节public String bitmaptoString(int pic) { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), "图片位置"); //将Bitmap转换成字符串 Stri转载 2017-07-07 17:47:52 · 1955 阅读 · 0 评论 -
Android 二维码的制作与解析
这里的二维码调用直接用的是一个Module,导入了之后就直接可以调用了。1,解析二维码使用startActivityForResult调用CaptureActivity就可以了。startActivityForResult(new Intent(this, CaptureActivity.class), 1616);@Overrideprotected voi原创 2017-03-07 14:49:44 · 245 阅读 · 0 评论 -
Android 简单的点击震动
首先,调取震动之前要获取震动权限,所以在清单文件中加上:uses-permission android:name="android.permission.VIBRATE"/>然后在代码中调用就行了:public class MainActivity extends AppCompatActivity { Vibrator vibrator; privat转载 2017-08-16 10:07:37 · 484 阅读 · 0 评论 -
Android 简单的播放器
简单的使用Service做一个播放器,其他地方使用的时候可以进行改造,这里只是把基本原理记录一下。首先创建一个Service:然后在Service中添加代码:public class ServicePlayer extends Service { private static final String TAG = "StartServicePlayMusic";原创 2017-08-16 10:46:20 · 322 阅读 · 0 评论 -
Android 仿微信发送语音消息的功能
微信的发送语音是有一个向上取消的,我们使用onTouchListener来监听手势,然后做出相应的操作就行了。直接上代码://语音操作对象private MediaPlayer mPlayer = null;private MediaRecorder mRecorder = null;//语音文件保存路径private String FileName = null;原创 2017-08-26 11:52:19 · 2215 阅读 · 0 评论 -
Android 图片二次采样、质量压缩
一、图片二次采样/** * 根据图片字节数组,对图片可能进行二次采样,不致于加载过大图片出现内存溢出 * @param bytes * @return */public static Bitmap getBitmapByBytes(byte[] bytes){//对于图片的二次采样,主要得到图片的宽与高int width转载 2017-09-05 17:06:43 · 227 阅读 · 0 评论 -
Android 获取文件/文件夹/转换文件的大小
/** * 获取指定文件大小 * @param f * @return * @throws Exception */ public static long getFileSize(File file) throws Exception { long size = 0;转载 2017-08-24 13:56:34 · 257 阅读 · 0 评论 -
Android 读取内存文件返回byte数组
File file = new File(Environment.getExternalStorageDirectory()+"/w650.jpg");private byte[] readFile(File file) { // 需要读取的文件,参数是文件的路径名加文件名 if (file.isFile()) { // 以字节流方法读取文件原创 2017-08-24 14:07:30 · 7192 阅读 · 3 评论 -
Android 图片的三级缓存
三级缓存:首先查看内存缓存有没有,如果有则加载,没有则继续判断本地有没有,如果有就加载,没有就去网络请求;private LruCache lruCache;int size = (int) (Runtime.getRuntime().maxMemory() / 8);lruCache = new LruCache(size) { @Override原创 2017-09-06 14:40:03 · 162 阅读 · 0 评论 -
Android 读取本地图片的缩略图
private Bitmap getImageThumbnail(String imagePath, int width, int height) { Bitmap bitmap = null; BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds =转载 2017-09-11 17:14:26 · 580 阅读 · 0 评论 -
Android 调起本地图片选择器
很多地方都会用到上传图片,然而上传图片的第一步就是选择图片,我们不可能让用户自己设置图片的路径,所以这时候就需要一个可视化的操作界面。我们选用系统自带的图片选择器或者是拍照:private static final File PHOTO_DIR = new File(Untils.getSdPathStr() + "qebangtong" + "/photo/");// 要保存图片原创 2017-09-11 17:16:22 · 364 阅读 · 0 评论 -
Android 轮播图片的实现
主布局: activity_main<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tool原创 2017-11-14 16:40:56 · 201 阅读 · 0 评论 -
Android 权限被拒之后,手动开启权限!
private AlertDialog mPermissionDialog; private void showPermissionDialog() { if (mPermissionDialog == null) { mPermissionDialog = new AlertDialog.Builder(MainActivity.this)转载 2017-12-12 11:36:29 · 2534 阅读 · 0 评论 -
Android 获取系统中软件的信息
/** * 得到手机中所有的应用程序信息 * * @return */ public List getAppInfos() { PackageManager pm = this.getPackageManager(); // 获得PackageManager对象 //创建要返回的集合对象 List ap转载 2017-12-04 10:23:23 · 278 阅读 · 0 评论