- 博客(32)
- 收藏
- 关注
原创 Android fromwork Binder 分析
这是一个模板方法,可以看到我们最终调用的是IServiceManager的asInterface方法返回,刚才提到,IBinder家族的BpBinder和BBinder是与通信业务相关的,那么业务层的逻辑又是如何巧妙地架构在Binder机制上的呢?在main_mediaserver的main函数中调用defaultServiceManager()返回一个IServiceManager,defaultServiceManager方法如下,从第一行可见IServiceManager也是一个单例模式。
2024-06-11 11:52:42 975
原创 C++单链表操作
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。节点结构如下:链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。上图所示。单链表有头插法和尾插法两个添加数据的方式,头插法顾名思义就是来一个节点的
2021-12-25 17:15:48 982
原创 基于词典规则的中文分词(C语言实现)
0 引 言自然语言处理(Natural Language Processing, NLP)是以语言为对象,利用计算机技术来分析、理解和处理自然语言的一门学科,即把计算机作为语言研究的强大工具,在计算机的支持下对语言信息进行定量化的研究,并提供可供人与计算机之间能共同使用的语言描写。包括自然语言理解(NaturalLanguage Understanding, NLU)和自然语言生成(Natural LanguageGeneration, NLG)两部分。它是典型边缘交叉学科,涉及到语言科学、计算机科学、数
2021-12-25 02:59:01 1788 2
原创 TabLayout 修改样式
TabLayout 修改样式实现效果如下:首先将tabIndicatorFullWidth属性设置为false,这样指示器就可以和字一样长了,tabIndicatorColor设置指示器的颜色,tabTextAppearance设置字体样式.<com.google.android.material.tabs.TabLayout android:id="@+id/tab_navigation" android:layout_width="match_parent" andr
2021-12-22 14:44:09 870
原创 Fragment + FragmentPagerAdapter的懒加载
FragmentPagerAdapterFragmentPagerAdapter执行流程,暂且说是生命周期吧可以去ViewPage的populate()方法中查看startUpdate() -> instantiateItem() ->destroyItem()->setPrimaryItem()->finishUpdate()在ViewPage源码addNewItem()中调用instantiateItem()方法接下来我们去看FragmentPageAdapter的源码
2020-08-28 22:03:06 658
原创 获取相机相册返回的Bitmap
Uri uri = data.getData();Bitmap bitmap = null;switch (requestCode){case 1:if(uri!=null){try {bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);} catch (IOException e) {e.pri...
2020-07-15 16:49:53 435
原创 sd操作详解
/***动态申请读写权限*/ private void quabXian(Activity activity) { String[] USER_PERMISSION = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}; for(in...
2020-07-15 16:48:48 839
原创 折叠式标题栏实现
布局代码:<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android....
2019-10-05 17:43:51 197
原创 NavigationView使用
导航菜单的制作方式多种多样,网上也有各种炫酷效果的具体实现方式,那么今天我主要是想来说说Google在Android5.0之后推出的NavigationView的具体使用方式。效果图:和普通的侧拉菜单制作方式一样,首先所有的东西还是都放在一个DrawerLayout中,只不过这次我们把左边滑出菜单的布局用一个NavigationView来代替,代码如下(DrawerLayout不会的话自行百...
2019-10-03 13:29:27 315
原创 安卓全局获取Context
public class MyApplication extends Application { private static Context context; @Override public void onCreate() { super.onCreate(); context = getApplicationContext(); ...
2019-09-25 17:49:31 167
原创 广播总结
无序广播: 特点效率高,不可拦截,可以多个广播接收者同时接收sendBroadcast();发送有序广播: 效率低,可拦截,同一时间自能一个接收,sendOrderedBroadcast()方法发送有序广播有优先级通过**priority**属性去设置可以在清单文件设置或者通过IntentFilter对象中的**setPriority()**方法设置如果优先级高的广播接收者调用abortBr...
2019-09-19 20:26:44 85
原创 SQL数据库事务的使用及分页查询
1、SQL数据库事务的使用(批量添加或删除使用) db.beginTransaction(); /** * 执行sql语句 db.execSQL(sql); */ db.setTransactionSuccessful(); db.endTransa...
2019-09-18 15:29:00 241
原创 加载大图片时内存溢出解决方法和获取屏幕宽高,图片宽高
1、加载进内存时压缩图片BitmapFactory.Options options = new Options();options.inSampleSize = 2; //压缩到原图的1/4Bitmap bitmap = BitmapFactory.decodeFile(图片路径,options);2、获取屏幕宽高Point outSizi = new Ponint();//这样就...
2019-09-16 16:51:27 212
原创 接口回调
思路:1、创建接口2、A类实现接口并把以实现的接口对象传给B类3、B类接到A类传过来的对象去调用已经实现的接口方法 就怎么简单代码实例://创建一个接口public interface Callback { void event(String result); }A类public class A{ //员A通过这个方法告诉程序员B任务 public void do...
2019-08-25 22:54:23 138
原创 ListView布局Item高无效解决方法
添加一个minHeight属性就可以解决想了一下还是贴一下代码<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" an...
2019-08-24 22:00:28 227
原创 JSON快速入手
慢慢看不要急假如这是返回的json串{“name” : “小李”“car” :[“1”,“2”]}1、创建一个JSONObject对象//实体类public class bean{ private String name; private List<String> car; //下面是get,set方法我就不写了}JSON格式的生成(我这里是通过实体类...
2019-08-24 21:52:32 193
转载 安卓shape属性详解
详细gradient地址:https://blog.csdn.net/zjdyhant/article/details/46537647shapecorners属性设置控件四个角的弧度strokewidth 设置边框的宽度 color 设置颜色solid设置背景色gradient是shape的颜色渐变属性android:angle...
2019-08-18 17:57:47 230
原创 AlertDialog的使用
效果图:示例代码:AlertDialog.Builder builder = new AlerDialog.Builder();builder.setTitle("提示");builder.setMessage("确定删除?"); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { ...
2019-08-18 17:37:28 188
原创 安卓使用Toolbar替换ActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 这里改成NoActionBar就好了 下面得item自己摸索去
2019-08-18 17:17:54 910
原创 安卓密码框及只能输入数字效果
详细信息 https://blog.csdn.net/fucaijin/article/details/80236736通过setInputType(129)设置隐藏密码 128明文显示
2019-08-13 22:36:28 492
原创 广播接收器
1、首先发送一个广播Intent intent = new Intent(类名.START); //START自己定义静态的标识sendBroadcast(intent);//发送广播2、接收广播//注册广播接收器IntentFilter filter = new IntentFilter();filter.addAction(类名.START);registerReceiv...
2019-08-11 11:54:55 231
原创 Handler实现Service和Activity通信(比广播更有性能上的优势,广播使用起来比较方便看个人爱好)
Handler实现Service和Activity通信1、使用Messenger实现跨进程通信2、Messenger包含handler的引用实现步骤(有点绕不要急)1、在Service中创建Messenger包含handler引用2、在onBind()方法中返回Messenger3、Activity绑定Service,获得Service的Messenger4、Activity中创建M...
2019-08-11 00:17:42 418
原创 SharedPreferences的使用
1、首先获取SharedPreferences对象 通过getSharedPreferences()方法获取final SharedPreferences sp = getSharedPreferences("user",MODE_PRIVATE); //设置名称,和权限 名称会用来获取数据你可以理解为数据库中的数据库名或表名2、获取数据String user = sp.getStri...
2019-08-09 23:59:08 216
原创 TextView在ViewPager中颜色切换
创建一个自定义Viwe1、这里是xml文件<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" a...
2019-08-09 23:34:14 297
原创 ViewPager适配器用法
适配器1、两种适配器的区别FragmentPagerAdapter()fragment没有被销毁FragmentStatePagerAdapter()fragment被销毁2、FragmentManager 的获取在Activity中通过getSupportFragmentManager()方法获取 ,在fragment中通过getChildFragment...
2019-08-09 17:42:27 709
原创 Notification(通知)的属性及简单使用
Notification的常用属性属性说明icon通知上的图标tickerText通知上显示滚动的文字when显示通知时间flags通知的特性contentView通知的视图default默认效果contentIntent点击通知栏的操作sound播放的声音...
2019-08-07 22:27:21 2268
原创 Android 使用Handler出现内存泄漏
在主线程中定义一个handler 1、这是第一种使用方法 private Handler handler = new Handler(){ public void handlerMessage(android.os.Message msg){ //可以在里面更新ui //获取传过来的值 类型 变量名 = msg.obj; ...
2019-07-21 18:28:33 166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人