Android
Simon66991
这个作者很懒,什么都没留下…
展开
-
Android11适配 - 软件包可见性
Android11的包可见性我们的应用常常会碰到与其他应用交互,比如登录功能,我们可能希望使用微信登录或者QQ登录,再比如分享,我们先判断是否安装了微信,然后决定是否展示微信的分享图标等等。这里我们有一个需求就是获取相关的软件包是否已经安装。但是在Android11中,除了默认的一些应用外,我们不能直接获取到软件包是否已经安装了,换句话说我们安装了一个应用,但是我们调用 getInstalledApplications() 或 getInstalledPackages()的可能没有返回此包名。这就原创 2022-03-21 11:33:31 · 850 阅读 · 0 评论 -
Android webview 与js(vue) 交互
Android 原生调用 JS 中的方法Android 调用 JS 有两种方式,都是通过 WebView 的方法(1)webview.loadUrl()(2)webview.evaluateJavascript()二者区别:(1)loadUrl() 会刷新页面,evaluateJavascript() 则不会使页面刷新,所以evaluateJavascript() 的效率更高(2)loadUrl() 得不到 js 的返回值,evaluateJavascript() 可以获取返回值(3)原创 2022-03-11 14:13:12 · 4983 阅读 · 0 评论 -
android 判断当前app是debug还是release
public static boolean isDebuggable() { PackageManager packageManager = MyApplication.getInstance().getPackageManager(); String packageName = MyApplication.getInstance().getPackageName(); try{ ApplicationInfo info = packageManager.getApplicationI原创 2022-02-22 10:13:16 · 1051 阅读 · 0 评论 -
Android视图动画
int mScreenWidth = getResources().getDisplayMetrics().widthPixels;//屏幕宽 int mScreenHeight = getResources().getDisplayMetrics().heightPixels;//屏幕高TranslateAnimation(平移动画)ABSOLUTE int w1 = v.getWidth();//Button控件的宽度 int h1 = v.g.原创 2022-01-12 10:06:39 · 1809 阅读 · 0 评论 -
滚轮选择器
implementation 'cn.aigestudio.wheelpicker:WheelPicker:1.1.3' private void initWP(WheelPicker wheelPicker) { String TAG = "10086"; // 通过setData方式设置数据集,不过此方法设置的数据在显示时都会被自动转换为String // 如果数据传入的是一个类的集合,那显示时就会直接调用他的toString方法,此时就要重写toSt原创 2022-01-06 16:35:48 · 1519 阅读 · 0 评论 -
RecyclerView 获取可见 item
LinearLayoutManager linearManager = (LinearLayoutManager) recyclerView.getLayoutManager();//最后一个可见view的位置int mLastVisibleItemPosition = linearManager.findLastVisibleItemPosition();//第一个可见view的位置int mFirstVisibleItemPosition = linearManager.findFirstVis原创 2022-01-06 13:47:14 · 2368 阅读 · 0 评论 -
RecyclerView报错:Scrapped or attached views may not be recycled. isScrap:false isAttached:true
## 刷新数据 //mList.clear() 之后要调用一次 mAdapter.notifyDataSetChanged() //适配器内 @Override public int getItemCount() { return list == null ? 0 : list.size(); }## 动画效果//xml布局文件内 去掉 android:animateLayoutChanges="true"属性,即<android.support..原创 2022-01-06 13:46:12 · 1548 阅读 · 0 评论 -
Android拨打电话
/** * 拨打电话(直接拨打电话) * 需要添加并动态申请权限 * <uses-permission android:name="android.permission.CALL_PHONE" /> * @param phoneNum 电话号码 */public void callPhone(String phoneNum){ Intent intent = new Intent(Intent.ACTION_CALL); Uri data = Uri.parse("t原创 2022-01-05 17:38:12 · 77 阅读 · 0 评论 -
Android 列表选中放大
activity:int newPos = -1;String title = "请选择你的团队";private void showDialog(List<GroupBean> data) { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); View view = LayoutInflater.from(getContext()).inflate(R.layout.原创 2022-01-04 15:01:06 · 1416 阅读 · 0 评论 -
限定RecyclerView显示最大条数
//限定显示最大条数,需要给item设置高度,这里是高度 48dp、条数 4; ViewGroup.LayoutParams lp = recycler.getLayoutParams(); lp.height = DensityUtil.dip2px(getContext(),48 * 4); recycler.setLayoutParams(lp);...原创 2022-01-01 19:01:29 · 2089 阅读 · 0 评论 -
Android webview 混合开发 HTML(JS)与Java 的交互
webview WebSettings 说明WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true); -> 是否开启JS支持webSettings.setPluginsEnabled(true); -> 是否开启插件支持webSettings.setJavaScriptCanOpenWindowsAutomatically(true); -> 是否允许JS打开.原创 2021-12-22 10:51:42 · 1329 阅读 · 0 评论 -
fragment在横竖屏切换(屏幕旋转)时候出现崩溃的问题;跳转系统相机横向拍照崩溃
问题今天在开发的时候遇到个问题,Activity里有个Fragment,Fragment里面有线程,当我点击跳转系统相机拍照时,纵向拍照时没问题,横向拍照时崩溃并报下面异常:Fragment LoadingDialog{5050c91} (43fec3a8-79d5-4cba-be44-e1847d712ed0)} not associated with a fragment manager.原因是原来的线程在运行中,横屏导致Activity绘制,生命周期重新走了一遍,原来的fragment实原创 2021-09-29 15:59:36 · 1700 阅读 · 0 评论 -
Android Thread 线程通信 更新view
Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 1: .原创 2021-09-29 09:11:17 · 128 阅读 · 0 评论 -
android studio 项目依赖查看
android studio 命令行输入 按cart + 回车./gradlew -q 主模块名:dependencies出现一个树状结构输出 “->”是重复的原创 2021-09-27 09:56:46 · 497 阅读 · 0 评论 -
Android中软键盘(输入法)收起的方法
package com.simon.util; import android.app.Activity;import android.content.Context;import android.view.inputmethod.InputMethodManager; public class KeyboardUtils { /** * 隐藏键盘的方法 * * @param context */ public static void hid原创 2021-09-14 17:28:30 · 2360 阅读 · 0 评论 -
解决因沉浸式标题栏导致布局底部EditText弹出软键盘时被覆盖或标题栏被弹出问题
根布局(不包含标题)用Scrollview嵌套布局,把mainfest和activity下设置的windowSoftInputMode都去掉//定义初始值,用来记录scrollView滑动距离private final int[] lastLocation = {0};//首先要监听弹出软键盘根布局的变化,这个用scrollview来监听 BDF.scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewT.原创 2021-09-14 10:30:06 · 194 阅读 · 0 评论 -
android mvvm点击事件绑定ViewModel
@{click}//xml:android:onClick="@{click}"//ViewModel:public void click(View view){}不带参数:@{() -> viewModel.click()}//xml:android:onClick="@{() -> viewModel.click()}"//ViewModel:public void click(){}@{viewModel::click}//xml:android:onCli原创 2021-09-13 09:33:58 · 2270 阅读 · 0 评论 -
Android之日期/时间选择对话框
日期/时间选择对话框(DatePickerDialog和TimePickerDialog)的使用<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_pare原创 2021-09-10 15:43:24 · 1005 阅读 · 0 评论 -
TextView ellipsize 省略号
在Android TextView中有个内容过长加省略号的属性,即ellipsize,用法如下:在xml中:android:ellipsize=”end” 省略号在结尾android:ellipsize=”start” 省略号在开头android:ellipsize=”middle” 省略号在中间android:ellipsize=”marquee” 跑马灯最好加一个TextView显示行数的约束,例如:android:singleline=”true”或者android:lines原创 2021-09-08 14:39:44 · 324 阅读 · 0 评论 -
lombok 使用
编译器安装 Lombok、GsonformatPlus两个插件在项目根目录创建 lombok.config填写:lombok.anyConstructor.suppressConstructorProperties=truegradle 添加//@JsonProperty("total")compile 'com.fasterxml:jackson-xml-databind:0.6.2'//@Dataprovided "org.projectlombok:lombok:1.16.18.原创 2021-09-06 16:14:53 · 113 阅读 · 0 评论 -
【100%有效】解决AndroidStudio 控制台编译输出中文乱码,亲测解决!
File Encodings 改为UTF-8双击Shift,输入vmoption,,选择Edit Custom CM Options如果之前没有配置过,会弹出窗口问是否创建配置文件,点击Create输入-Dfile.encoding=UTF-8保存,重启就可以了!解决System.out.print输出的中文乱码问题build.gradle 添加如下代码 tasks.withType(JavaCompile) { options.encoding =.原创 2021-09-06 09:33:53 · 152 阅读 · 0 评论 -
饼状统计图,带有标注线,都可以自行设定其多种参数选项
PieChartViewpackage cn.simon.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Path;import android.graphics.RectF;import android.text.Text原创 2021-09-02 10:27:06 · 253 阅读 · 0 评论 -
Android EditText 属性汇总
1、EditText输入的文字为密码形式的设置(1)通过.xml里设置:把该EditText设为:android:password="true" // 以”.”形式显示文本(2)在代码里设置:通过设置EditText的setTransformationMethod()方法来实现隐藏密码或这显示密码。editText.setTransformationMethod(PasswordTransformationMethod.getInstance());//设置密码为不可见。2、EditText输原创 2021-08-19 13:13:32 · 1482 阅读 · 0 评论 -
Android Studio使用IconFont阿里矢量图标库
在Android Studio中的src文件夹右键单击New,创建Assets文件夹在assets下新建一个iconfont目录将iconfont.ttf复制到iconfont目录下在res/values/strings.xml,添加 string 值测试一波,在xml中写一个TextView,然后再Activity中设置下Typefacexml布局Activity封装一个类,不需要手动设置Typeface自定义TextViewpackage com.s原创 2021-08-18 10:00:00 · 861 阅读 · 0 评论 -
Android 文件下载简单实现
**工具类(两个方法,自己悟!!!)**package com.simon.util;import android.app.AlertDialog;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.os.Environment;import android.os.Handler;import android.os..原创 2021-06-07 14:54:50 · 429 阅读 · 0 评论 -
Android上传图片
设定拍照返回的图片路径 /** * 设定拍照返回的图片路径 * @param image 图片路径 * @param i 约定值 */ protected void image(String image, int i) { //创建file对象,用于存储拍照后的图片,这也是拍照成功后的照片路径 outputImage = new File(getExternalCacheDir(),image); try .原创 2021-05-17 14:31:32 · 322 阅读 · 0 评论 -
图片工具
public class PhotoBitmapUtils { /** * 存放拍摄图片的文件夹 */ private static final String FILES_NAME = "/MyPhoto"; /** * 获取的时间格式 */ public static final String TIME_STYLE = "yyyyMMddHHmmss"; /** * 图片种类 */ public static final String IMAGE原创 2021-05-17 10:09:14 · 53 阅读 · 0 评论 -
工具类
/* * framework工具类 */public class Utils { /** tag */ private static final String TAG = "Utils"; /** * 安装某个应用 * * @param context * @param apkFile * @return */ public static boolean installApp(Context contex原创 2021-03-11 10:57:12 · 73 阅读 · 0 评论 -
Android View Binding的使用
什么是View BindingView Binding是Android Studio 3.6推出的新特性,目的是为了替代findViewById(内部实现还是使用findViewById)。。在启动视图绑定后,系统会为改模块中的每个xml文件生成一个绑定类,绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。官方文档View Binding 的优点**Null 安全:**由于视图绑定会创建对视图的直接引用,因此不存在因视图 ID 无效而引发 Null 指针异常的风险。此外,.原创 2021-03-01 15:50:53 · 566 阅读 · 7 评论 -
获取屏幕宽高工具类
public class ScreenUtils { /** * 获取屏幕高度(px) */ public static int getScreenHeight(Context context) { return context.getResources().getDisplayMetrics().heightPixels; } /** * 获取屏幕高度 */ public static DisplayMet原创 2021-01-20 08:51:52 · 140 阅读 · 0 评论 -
String转Base64
public class Base64Util { private static final String UTF_8 = "UTF-8"; private static final String TAG = "Base64"; /** * 对给定的字符串进行base64解码操作 */ public static String decodeData(String inputData) { try { if (nu原创 2021-01-19 17:32:40 · 840 阅读 · 0 评论 -
Android自定义Spinner下拉列表
CustomSpinnerpublic class CustomSpinner extends TextView { private Context mContext; /*** 获取当前选中的item*/ private int selectedItemPosition = 0; private List<String> mListData = null; private PopupWindow mPopWindow = null; .原创 2020-12-29 16:01:41 · 172 阅读 · 0 评论 -
偶然间得到的framework工具类 自用
/* * framework工具�? */public class Utils { /** tag */ private static final String TAG = "Utils"; /** * 安装某个应用 * * @param context * @param apkFile * @return */ public static boolean installApp(Context conte原创 2021-06-07 15:03:13 · 782 阅读 · 3 评论 -
下载安装包到本地,安装等
具体代码 /** * 下载目录 */ private String filepath = "/.***/"; /** * apk名称 */ private String filepaths = "***.apk"; private String flil = ""; /** * 下载链接 */ private String mUrl = "http://www.***.com/***.ap.原创 2020-12-25 14:44:15 · 842 阅读 · 0 评论 -
动态检测权限
日常记录,防忘记private static final int REQUEST_EXTERNAL_STORAGE = 1;/** * 所需要的权限列表 */private static String[] PERMISSIONS_STORAGE = { "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" };public static .原创 2020-12-25 14:31:57 · 164 阅读 · 0 评论 -
Android 自定义弹窗提示(AlertDialog)
Android 自定义弹窗提示Java文件:private void showSetDeBugDialog() { AlertDialog.Builder setDeBugDialog = new AlertDialog.Builder(this); //获取界面 View dialogView = LayoutInflater.from(this).inflate(R.layout.system_admin_psw_alert_dialog, null)原创 2020-12-14 14:53:59 · 2279 阅读 · 0 评论 -
Android端简易音视频通话
在编码和推流,有两个方案选择:一: 使用javacv来实现,最终也是用过ffmpeg来进行编码和推流,javacv实现到可以直接接收摄像头的帧数据需要自己实现的代码只是打开摄像头,写一个SurfaceView进行预览,然后实现PreviewCallback将摄像头每一帧的数据交给javacv即可javacv地址:https://github.com/bytedeco/javacvdemo地址:https://github.com/beautifulSoup/RtmpRecoder/tree/mas原创 2020-11-26 09:49:12 · 1133 阅读 · 0 评论 -
Android开发编译慢,那就设置阿里镜像
Android开发设置阿里镜像buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } google() jcenter()原创 2020-11-24 14:36:37 · 153 阅读 · 0 评论 -
Android中Recyclerview分页加载
通过添加Recyclerview的OnScrollListener来判断Recyclerview是否滑动到底部mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { //当前RecyclerView显示出来的最后一.原创 2020-10-26 14:43:15 · 1272 阅读 · 1 评论 -
@BindView使用
引入jar包dependencies { implementation 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'}安装专属插件file>settings>plugins>marketplace搜索ButterKnife 安装插件使用选中xml资源文件 alt+ins...原创 2020-10-24 17:44:29 · 459 阅读 · 0 评论