View
文章平均质量分 58
View
生来如风
这个作者很懒,什么都没留下…
展开
-
CoordinatorLayout + AppBarLayout
CoordinatorLayout + AppBarLayout原创 2023-01-30 13:57:28 · 256 阅读 · 0 评论 -
ConstraintLayout 细节
ConstraintLayout 细节原创 2023-01-30 13:56:00 · 621 阅读 · 0 评论 -
音频-剪辑拖拽 View
音频-剪辑拖拽 View原创 2023-03-01 15:12:15 · 305 阅读 · 1 评论 -
WebView 的内存泄漏
WebView 的内存泄漏原创 2023-03-01 15:11:39 · 1498 阅读 · 0 评论 -
Android之PercentFrameLayout(百分比布局)
一、在app/build.gradle的dependencies添加依赖库implementation 'androidx.percentlayout:percentlayout:1.0.0'之后需要点击Sync Now,gradle会开始同步,把新添加的百分比布局库引入到项目中二、activity_main.xml:进行布局<?xml version="1.0" enc...原创 2020-02-04 09:39:01 · 1895 阅读 · 1 评论 -
Android之PopupWindow(弹窗)
一、特点1、可以在任意位置出现(对话框基本上只会在中间出现)2、在弹窗中间可以附加多种操作(对话框通常指针对于一种操作的不同选择)3、弹窗不会展现在界面中,只有进行某种操作后,才会出现,而出现的弹窗必然是与操作相关的一些后续操作或选项(弹窗是一个在你需要的时候,给你更多选择;在你不需要的时候,不会干扰你的视线)二、PopupWindow的位置以某一控件为参照物,设置相对位置三、Popu...原创 2020-01-30 12:37:49 · 675 阅读 · 0 评论 -
Android之ViewGroup
ViewGroup的使用原创 2020-02-05 14:18:13 · 227 阅读 · 0 评论 -
Android之ViewPager(一)
效果图一、activity_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" andr...原创 2020-02-04 20:43:43 · 579 阅读 · 0 评论 -
Android之ViewPager(二)
效果图一、activity_image_view_adapter.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_pa...原创 2020-02-05 14:11:45 · 380 阅读 · 0 评论 -
ViewPager+Fragment
ViewPager+Fragment组合的预加载和懒加载解释上篇文章中,为什么有人说isViewCreated标记是冗余的,可直接通过Fragment#getView()获得:Fragment的getView()为空问题原创 2021-09-16 15:41:41 · 1358 阅读 · 0 评论 -
Android之Viewpager结合Fragment使用(一)
效果图:加上了位置position后:一、activity_tab_view_pager.xml:ViewPager用于滑动View<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android...原创 2020-02-05 19:58:28 · 659 阅读 · 0 评论 -
Android之Fragment
Fragment详解原创 2020-02-07 11:59:35 · 134 阅读 · 0 评论 -
Android之RecyclerView
一、准备工作在app/build.gradle的dependencies中,加入以下一行代码implementation 'androidx.recyclerview:recyclerview:1.1.0'垂直滚动二、activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:...原创 2020-02-02 22:07:41 · 640 阅读 · 0 评论 -
Android之RecyclerView:LayoutManager(线性布局管理器)
在RecyclerView中,我们可以通过LayoutManager控制其布局的显示方式,实现横向ListView、GridView、瀑布流等常见效果。RecyclerView.LayoutManager是一个抽象类,其直接的实现类有LinearLayoutManager、StaggeredGridLayoutManager,而LinearLayoutManager也有一个子类GridLayo...原创 2020-02-03 20:29:09 · 1730 阅读 · 0 评论 -
Android之适配器(RecyclerView)
一、layout1、activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" and...原创 2020-02-03 17:08:43 · 888 阅读 · 0 评论 -
Android之ArrayAdapter(数组适配器)
一、activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_...原创 2020-02-02 19:55:10 · 1329 阅读 · 0 评论 -
Android之TabHost
TabHost底部导航原创 2020-02-07 10:54:31 · 99 阅读 · 0 评论 -
Android之Viewpager结合Fragment使用(二)(TabHost)
效果图:实现了底部导航一、activity_tab_view_pager.xml:ViewPager用于滑动View<?xml version="1.0" encoding="utf-8"?><TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:ori...原创 2020-02-06 16:53:36 · 165 阅读 · 0 评论 -
showAsAction的属性
1、always 在操作栏直接显示;当有图标时,只显示图标,不显示文本 <item android:title="保存"! android:icon="@mipmap/ic_launcher" app:showAsAction="always"/>2、withText 显示文本 <item android:title="...原创 2020-01-28 20:55:02 · 736 阅读 · 0 评论 -
Android之Menu
Menu详解原创 2020-02-07 11:31:04 · 117 阅读 · 0 评论 -
Android之PopupMenu
基本步骤:1、创建Menu2、实例化PopupMenu对象3、加载菜单资源:利用MenuInflater4、为PopupMenu设置点击监听器5、千万不要忘记这一步【注意】在API版本11之后的设备才可以使用一、一、创建Menu1、在res文件夹中新建文件夹menu;2、在menu文件夹中新建popup.xml(文件名随意),文件内容如下,item就是menu菜单中的条目;&l...原创 2020-01-29 11:05:57 · 1866 阅读 · 0 评论 -
Menu显示
1、onCreateOptionsMenu()方法必须返回true@Override public boolean onCreateOptionsMenu(Menu menu) { //一定要记得返回true,否则菜单不显示 return true; }2、@Override public boolean onOptionsItem...原创 2020-01-29 11:45:57 · 192 阅读 · 0 评论 -
Android之ContextMenu
基本步骤:1、创建Menu2、注册3、创建ContextMenu:覆盖父类方法onCreateContextMenu4、菜单项的操作:覆盖父类方法onContextItemSelected5、为按钮设置上下文操作模式一、创建Menu1、在res文件夹中新建文件夹menu;2、在menu文件夹中新建context.xml(文件名随意),文件内容如下,item就是menu菜单中的条目;...原创 2020-01-28 22:29:39 · 1392 阅读 · 1 评论 -
Menu创建的方式
Menu创建的方式:1、通过xml定义2、通过java定义3、效果一、通过xml资源来设计menu1、xml文件<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sch...原创 2020-01-29 11:30:27 · 417 阅读 · 0 评论 -
Android之OptionMenu
Menu基本使用步骤:1、启用Menu;2、设置menu点击事件;3、设置Menu图标显示。只要按照步骤套用就可以使用menu基本功能,直接套用就行。一、启用Menu:a、在res文件夹中新建文件夹menu;b、在menu文件夹中新建menu.xml(文件名随意),文件内容如下,item就是menu菜单中的条目;<?xml version="1.0" encoding="ut...原创 2020-01-28 20:55:49 · 261 阅读 · 0 评论 -
Android——(xml)include用法
导入另一个XML文件到本布局中原创 2020-02-07 10:29:10 · 383 阅读 · 0 评论 -
Android之ListView(一)
文章目录一、ListView概念二、怎么使用?三、ListView实现步骤代码实现过程:具体代码AppListActivity:更改数据源(系统已安装应用列表):为View设置点击事件:方法一:在AppListAdapter内部类的getView方法中方法二:在onCreate方法中特性:addHeaderView()优化列表:ViewHolder()进行缓冲学习目标:一、ListVie...原创 2020-02-19 18:24:44 · 598 阅读 · 3 评论 -
Android之ListView(三)
文章目录activity_main.xmlchatting_item_msg_text_left.xmlchatting_item_msg_text_right.xmlChatActivity目标图:activity_main.xml<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android=...原创 2020-02-20 17:20:38 · 233 阅读 · 0 评论 -
Android之ListView(二)
一、使用异步访问网络代码:package com.example.listviewstudy;import android.os.AsyncTask;import android.os.Bundle;import android.widget.ListView;import androidx.annotation.Nullable;import androidx.appcompa...原创 2020-02-20 15:01:44 · 169 阅读 · 0 评论 -
Android之SimpleCursorAdapter
文章目录一、参数一、参数context:该listview和该SimpleCursorAdapter运行的环境layout :是每一列的layout,其中必须包含在to参数中定义的viewc:the Cursorfrom:是一个需要绑定到to中定义的view的数据to:多个view,用来装from的数据flag:定义该adapter的行为怎么理解Cursor?可以把Curso...原创 2020-02-24 23:07:42 · 1223 阅读 · 1 评论 -
Android之UIBestPractice
一、下面会用到RecyclerView,在app/build.gradle的dependencies添加依赖库implementation 'androidx.recyclerview:recyclerview:1.1.0'二、activity_main.xml:编写主界面<?xml version="1.0" encoding="utf-8"?><Linear...原创 2020-02-04 10:28:57 · 418 阅读 · 0 评论 -
Android之BaseAdapter
一、BaseAdapter简介及使用场景BaseAdapter 是一个抽象类,常用于和 Android 中的一些控件如ListView,GridView,ExpandableListview,Spinner 等控件结合来显示数据的一种控件,在 Android 开发中占有很重要的位置二、Adapter 结构图三、BaseAdapter 的使用步骤BaseAdapter 是一个抽象...原创 2020-02-08 21:39:11 · 2495 阅读 · 0 评论 -
Android之BaseAdapter
文章目录一、BaseAdapter简介及使用场景二、BaseAdapter 的使用步骤三、BaseAdapter 中抽象方法一、BaseAdapter简介及使用场景BaseAdapter 是一个抽象类,常用于和 Android 中的一些控件如ListView,GridView,ExpandableListview,Spinner 等控件结合来显示数据的一种控件,在 Android 开发中占有...原创 2020-02-19 17:36:29 · 590 阅读 · 0 评论 -
Android之CardView
文章目录一、常用属性二、属性效果展示三、案例展示具体代码:1、一个最简单的示例:2、复杂化四、案例1、布局搭建2、实体类创建3、功能实现4、适配CardView继承FrameLayout一、常用属性1、cardBackgroundColor 设置背景色CardView是View的子类,View一般使用Background设置背景色,为什么还要单独提取出一个属性让我们来设置背景色呢?为了...原创 2020-02-21 15:36:53 · 19149 阅读 · 2 评论 -
CardView踩到的一个小坑
项目场景:实现渐变的阴影效果问题描述:用CardView实现,底部的阴影被截断了,没有渐变到无的效果原因分析:CardView左边没有设置margin值,阴影没有足够的空间展示出来解决方案:提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。原创 2020-10-15 23:11:48 · 346 阅读 · 0 评论 -
Android之LayoutInflater
resource : 它是要解析的XML文件的id号(必填)root : 如果传入不为空, attachToRoot也为true, 就把XML解析后的view加入root子控件, 然后返回这个root;否则, 就返回一个解析之后的XML生成的view.attachToRoot : 决定是否让root成为返回值的父控件view=inflater.inflate(R.layout.news_c...原创 2020-02-03 11:27:44 · 137 阅读 · 0 评论 -
Android之label没有显示
继承了Acticity会默认不显示标题,继承AppCompatActivity后才能显示原创 2020-01-30 20:42:12 · 1474 阅读 · 0 评论 -
CoordinatorLayout+AppBarLayout+RecyclerView的使用
Coordinatorlayout的使用原创 2020-10-16 21:52:53 · 551 阅读 · 0 评论 -
RecyclerView的缓存机制
文章目录一、四级缓存一、四级缓存RecycleView总共有四级缓存一级缓存:Scrap,有两个ArrayList集合变量,一个存储当前还在屏幕中的ViewHolder,另一个存储数据被更新的ViewHolde二级缓存:CacheViews,默认大小为2,通常用来存储预取的ViewHolder,同时在回收ViewHolder时,也可能会存储一部分的ViewHolder三级缓存:ViewCacheExtension,自定义缓存【是空实现,一般都不会去实现它】四级缓存:RecycledViewPo原创 2021-04-17 09:44:12 · 1223 阅读 · 0 评论 -
invalidate()、postInvalidate()、requestLayout()区别与联系
文章目录一、相同点二、不同点一、相同点都是用来刷新界面的二、不同点首先invalidate()和postInvalidate()方法只会调用onDraw()方法;requestLayout()方法则会重新调用onMeasure、onLayout、onDraw。其次invalidate()只会在UI线程调用,postInvalidate()可以在非UI线程中调用调用了invalidate方法后,会为该View添加一个标记位,同时不断向父容器请求刷新,父容器通过计算得出自身需要重绘的区域,直到传原创 2021-04-17 08:58:30 · 498 阅读 · 0 评论