android
JohnLiu_
这个作者很懒,什么都没留下…
展开
-
Android LiveData的使用
LiveData是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。 下面这个较为简单的示例将展示如何使用LiveData。创建ViewModelLiveD...原创 2019-12-31 17:20:38 · 961 阅读 · 0 评论 -
Android ViewModel的使用
ViewModel的作用是为界面准备数据,数据的获取操作(如网络请求)或者一些数据处理可以在该类中编写方法,减少在Activity的代码。ViewModel里面的数据可以分为以下三类。普通数据,只是负责保存数据,无特别作用,可当做普通类来用 public class DataViewModel extends ViewModel { public String name; ...原创 2019-12-31 16:09:19 · 4664 阅读 · 0 评论 -
Android Lifecycles的使用
先说说开发环境,本人使用的Android Studio 版本为3.5,gradle版本是5.4.1,在此之下的版本不确保能用。添加依赖 要使用Lifecycles需要在项目对应的gradle文件中添加以下的依赖,重要的是'androidx.appcompat:appcompat:1.1.0'这个dependencies { implementation fi...原创 2019-12-25 18:12:02 · 517 阅读 · 0 评论 -
Android DataBinding的简单使用
官方文档地址:https://developer.android.google.cn/topic/libraries/data-binding 先说说开发环境,本人使用的Android Studio 版本为3.5,gradle版本是5.4.1,在此之下的版本不确保能用。 要使用DataBinding需要在项目对应的gradle文件中添加以下的设置...原创 2019-12-25 11:57:25 · 1106 阅读 · 0 评论 -
android 获取某个class里的所有成员变量和静态变量的名称方法
public static List getNameList(Class c){ ArrayList nameList = new ArrayList<>(); for (Field field : c.getDeclaredFields()){ nameList.add(field.getName()); }原创 2018-01-20 17:41:00 · 2147 阅读 · 0 评论 -
android 判断是否在debug模式
public static boolean isDebuggable() { boolean debuggable = false; PackageManager pm = getInstance().getPackageManager(); try{ ApplicationInfo appinfo = pm.getApplicationInfo(getI...原创 2017-11-13 10:35:22 · 4675 阅读 · 0 评论 -
android 读取系统通讯录
在manifest添加以下权限uses-permission android:name="android.permission.READ_CONTACTS" />原创 2017-09-01 10:41:40 · 747 阅读 · 0 评论 -
android 获取系统通话记录
在manifest加上以下权限uses-permission android:name="android.permission.READ_CALL_LOG" />uses-permission android:name="android.permission.READ_CONTACTS" />原创 2017-09-01 10:10:48 · 8655 阅读 · 5 评论 -
android 向系统插入一条通话记录
/** * 插入一条通话记录 * @param number 通话号码 * @param duration 通话时长(响铃时长)以秒为单位 1分30秒则输入90 * @param type 通话类型 1呼入 2呼出 3未接 * @param isNew 是否已查看 0已看1未看 */ private void inse原创 2017-08-16 11:50:54 · 7029 阅读 · 0 评论 -
android 控件添加边框
在drawable创建一个xml文件 <corners android:bottomleftradius="10px" android:bottomrightradius="10px" android:top原创 2017-08-31 15:04:49 · 729 阅读 · 0 评论 -
android 控件背景添加圆角
在drawable创建一个xml文件<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--圆角半径--> <corners android:radius=&qu原创 2017-08-31 14:53:59 · 7195 阅读 · 0 评论 -
android 监听软键盘的弹出与隐藏
首先在activity定义一个全局变量isHide = true;然后在onCreate方法中调用addSoftInputListener();/** * 监听软键盘显示隐藏 */ private void addSoftInputListener() { final View decorView = getWindow().getDecor...原创 2017-08-22 17:40:19 · 322 阅读 · 0 评论 -
Android 清理app所有缓存
ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);manager.clearApplicationUserData();原创 2017-12-07 14:48:12 · 1902 阅读 · 1 评论 -
android List深复制(修改复制的list不影响原list)
public static <E> List<E> deepCopy(List<E> src) { try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new...原创 2017-12-07 17:33:58 · 7871 阅读 · 2 评论 -
android textview宽度固定的情况下字体大小自适应
//固定宽度的情况下,自适应文本字体大小 public static float adjustTvTextSize(TextView tv, int maxWidth, String text) { int avaiWidth = maxWidth - tv.getPaddingLeft() - tv.getPaddingRight() - 10; if原创 2017-12-26 16:12:05 · 3753 阅读 · 0 评论 -
android Notification用法
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);Intent intent = new Intent(this,Main2Activity.class);PendingIntent pendingIntent= PendingInten...原创 2017-08-08 11:47:24 · 280 阅读 · 0 评论 -
android 将log或文本记录到文件的工具类
使用之前记得添加文件写入相关权限import android.os.Environment;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.PrintWriter;import java.text.SimpleDateFormat;import j...原创 2018-10-16 11:52:03 · 1149 阅读 · 0 评论 -
android 动态控制dialog窗口大小
以下方法为限制dialog的最小宽度以及最大高度,可以通过修改判断条件来控制最小或最大 /** * 在dialog.show()前调用此方法 * @param mView dialog要显示的view */ private void setDialogSize(final View mView){ mView.addOnLayou...原创 2018-10-10 15:01:39 · 4282 阅读 · 0 评论 -
android 使用fastjson解析json数据
在build.gradle添加fastjson的依赖dependencies { ...... compile 'com.alibaba:fastjson:1.2.21'}现有一个json字符串,格式如下{ 'msg': '返回的数据', 'code': 200, 'list': [{ 'name': '张三', 'ID': 1 }, { 'n...原创 2019-03-21 11:48:50 · 4164 阅读 · 0 评论 -
Android/java Date日期相关工具类
将Date与String/时间戳之间相互转换,日期加减,日期判断等常用操作封装到一起的工具类import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalenda...原创 2019-03-21 15:25:54 · 357 阅读 · 0 评论 -
Android/Java Map深复制(修改复制的Map不影响原Map)
public static <E,T> Map<E,T> deepCopy(Map<E,T> src) { try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutpu...原创 2019-03-21 15:42:51 · 1722 阅读 · 1 评论 -
android MediaRecorder录音详解
简单使用例子:try { MediaRecorder recorder = new MediaRecorder();// recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);// recorder.setAudi原创 2017-08-07 09:59:56 · 4915 阅读 · 0 评论 -
android 获取应用各类型标准目录方法
getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath() 返回的是图片存放的标准目录,应用被卸载时这个目录也会被删除。参数还有:public static String DIRECTORY_ALARMS系统提醒铃声存放的标准目录。public static String DIRECTORY_原创 2017-08-07 09:52:53 · 266 阅读 · 0 评论 -
Android 添加权限一览表
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES,读取或写入登记check-in数据库属性表的权限 获取粗略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户粗略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置 android....原创 2017-08-03 14:26:49 · 966 阅读 · 0 评论 -
android 使用binder实现Service与activity进行交互
在activity需要与Service进行交互的时候,我们就要用到binder机制,具体实现如下:原创 2017-08-09 11:42:57 · 441 阅读 · 0 评论 -
android 使用Service进行双进程守护,防止进程被杀
以下所用的方法只适用于防止app太久在后台太久而被系统杀死,在系统的一键清除功能下进程还是会被杀死的。若要防止进程被系统的一键清除功能杀死,要设置允许当前app自启动。如何设置请看 跳转自启动管理页原创 2017-08-09 13:24:21 · 1495 阅读 · 0 评论 -
android 向系统通讯录添加一个联系人信息
方法一:直接跳转到系统的新建联系人页面public void addContact() { Intent intent = new Intent(Intent.ACTION_INSERT); intent.setType("vnd.android.cursor.dir/person"); intent.setType("vnd.android.c原创 2017-08-16 15:38:13 · 5471 阅读 · 0 评论 -
android 保存bitmap到本地
public static void saveBitmap(Bitmap bitmap, String storePath) { Log.e(TAG, "保存图片"); File f = new File(storePath); if (f.exists()) { f.delete(); } try { FileOutputS原创 2017-08-08 11:24:28 · 803 阅读 · 0 评论 -
android 根据有无sd卡获取存放路径
使用时自行修改文件名public static String getStorePath(Activity activity){ boolean sdExist = Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED); String path; if (s原创 2017-08-08 11:21:47 · 329 阅读 · 0 评论 -
android long数据转换成日期方法
timeL为long形数据String date = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format( new java.util.Date(timeL));原创 2017-08-08 11:19:32 · 2576 阅读 · 0 评论 -
android 删除整个文件夹里面的文件
使用时记得添加操作文件的权限!<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-pe...原创 2017-07-31 22:57:25 · 26603 阅读 · 5 评论 -
android 6.0之后的敏感权限注册方法
android 6.0版本后部分权限不能在manifest文件中直接通过uses-permission注册申请,需要通过代码注册,方法如下。首先把所有要申请的权限放进一个String[ ]中,如String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission....原创 2017-08-07 09:44:55 · 1770 阅读 · 0 评论 -
Android activity的屏幕显示方向screenOrientation属性设置
Activity在屏幕当中显示的方向。screenOrientation属性值可以是下表中列出的一个值:(在AndroidManifest中对应的activity配置中设置)"unspecified" 默认值,由系统来选择方向。它的使用策略,以及由于选择时特定的上下文环境,可能会因为设备的差异而不同。 "user" 使用用户当前首选的方向。 "behind" ...转载 2017-08-03 14:37:44 · 1813 阅读 · 0 评论 -
android 为listview设置自定义adapter
自己新建一个类:public class VoicegameAdapter extends ArrayAdapter { String []words;//不仅限字符串,也可以是自定义一个类里面的一组数据 Context context; private int resourceId; public VoicegameAdapter(Context contex原创 2017-08-03 14:41:27 · 880 阅读 · 0 评论 -
android 通过tcp发送数据
public class SendThread extends Thread { private MainActivity activity; Handler handler; Socket s=null; String message; String ip; //远方服务器的IP地址 int port;//远方服务器的port public原创 2017-08-07 09:49:42 · 2873 阅读 · 0 评论 -
android 页面底部弹出菜单(dialog)
列举两种方法:方法一:使用dialog(背景会变暗)private void showDialog(Context context, @LayoutRes int resource) { //设置要显示的view View view = View.inflate(context,resource,null); //此处可按需求为各控件设置属性 view.findVi...原创 2017-08-04 16:57:52 · 6788 阅读 · 0 评论 -
android 获取textview中我们所点击的某个字(句)
通常我们为textview绑定点击事件只能监听整个textview的点击时间,如我们想获取我们实际点的是哪一个字可通过以下方法实现(textview可以绑定单击或长按监听器)textView = (TextView) findViewById(R.id.word);SpannableStringBuilder s = new SpannableStringBuilder(text原创 2017-08-04 16:54:43 · 2642 阅读 · 1 评论 -
android 自定义圆形的ImageView
定义类:public class MLRoundedImageView extends android.support.v7.widget.AppCompatImageView { public MLRoundedImageView(Context context) { super(context); } public MLRoundedImageV原创 2017-08-11 13:40:12 · 2013 阅读 · 1 评论 -
android 控件背景设置渐变色
在drawable文件夹创建xml文件 复制以下代码<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="135" android:cente...原创 2017-08-03 16:42:43 · 8161 阅读 · 0 评论 -
android dialog style属性设置
<!--最近做项目,用到alertDialog,用系统自带的style很难看,所以查了资料自己定义了个style.res/value/style.xml内增加以下代码:--> @null true true true转载 2017-08-03 15:00:41 · 8780 阅读 · 0 评论