
《零基础到App上线》学习笔记
轨迹
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android中ProgressDialog的使用
1.简介ProgressDialog可以表示操作正在后台进行。如果使用的是转圈的ProgressDialog则可以配合Handler,如果是使用进度条形式的ProgressDialog则可以配合线程使用。主要方法:setTitle:设置标题setMessage:设置对话框消息内容setIcon:设置图标setProgress:设置当前进度值setSecondProgress:设置...原创 2019-11-17 22:22:39 · 612 阅读 · 0 评论 -
TabLayout搭配ViewPager
1.简介TabLayout搭配ViewPager是一个固定的套路,可以轻易实现下面这种效果。2.使用xml中。<com.google.android.material.tabs.TabLayout android:id="@+id/tab_choose" android:layout_width="match_parent" android:layout_height="...原创 2019-10-24 14:14:43 · 249 阅读 · 0 评论 -
Handler与Message实现分线程与UI线程通讯
1.简介在Android系统中,只有主线程才能直接操作UI。分线程想更新UI或者向主线程传递消息可以利用Handler配合Message来实现。Message的主要参数如下图:其中arg1和arg0可以用来返回处理的结果,obj可以用于存放消息的数据结构,what用于表示消息的作用。2.使用主线程中初始化一个Handler对象,重写handleMessage方法(用于处理下消息的回...原创 2019-10-22 13:33:37 · 354 阅读 · 0 评论 -
快速学会Android Studio中的Logcat的使用
学会使用Logcat可以让我们快速调试或测试Android程序,下面是一个快速入门教程。快速一览使用如果我们想要打印一条Log,直接调用Log.d(String TAG, String message)函数即可(其中d代表debug模式,还有e、i等同理)。其中TAG代表输出Log的标签,message即输出的消息。过滤框中输入对应的TAG并选择合理的模式即可快速查看我们想要看的Log(...原创 2019-10-18 20:00:28 · 1023 阅读 · 0 评论 -
Android中SnackBar的的使用
SnackBar提供一些操作的轻量级反馈,如下面的删除操作在屏幕底部显示一条简短消息。下面示例代码可以显示一个SnackBar。其中静态函数make的第一个参数代表显示在哪个视图,第二个参数代表提示信息,第三个参数代表显示长短(可以是LENGTH_INDEFINITE(一直显示)、LENGTH_LONG、LENGTH_SHORT)。setAction函数是给SnackBar设置事件监听,第一个...原创 2019-10-18 19:25:32 · 353 阅读 · 0 评论 -
Android中菜单栏的使用(上下文菜单)
1.简介上下文菜单提供了许多操作,这些操作影响 UI 中的特定项目或上下文框架。使用步骤如下:通过调用 registerForContextMenu(),注册应与上下文菜单关联的 View 。registerForContextMenu(tv_test);实现 onCreateContextMenu() 方法。public void onCreateContextMenu(Co...原创 2019-08-13 10:29:21 · 583 阅读 · 0 评论 -
Android利用Application设置和操作全局变量
1.简介Application用于维护全局应用程序状态的基类,在App的运行过程中有且仅有一个Application贯穿整个生命周期。一般通过创建它的子类并设置AndroidManifest.xml中的Application节点的name属性为子类名称来提供自己的实现。子类一般采用单例设计模式,一般在Application中存放频繁读取的信息、网络上下载的临时数据(为了节约流量、减少等待时间)、...原创 2019-08-12 13:32:27 · 773 阅读 · 0 评论 -
Android数据库SQLite的使用
1.简介SQLite是一个小巧的嵌入式数据库,它的多数语法和Oracle一样(还好这个学期学了数据库)。SQLiteDataBase是SQLite的数据库管理类,具有创建,删除,执行SQL命令以及执行其他常见数据库管理任务的方法。SQLiteOpenHelper是用于管理数据库创建和版本管理的帮助程序类,是个抽象类,一般我们会创建创建一个子类继承自SQLiteOpenHelper实现onCrea...原创 2019-08-12 10:14:47 · 355 阅读 · 0 评论 -
Android轻量级存储工具SharedPreferences的使用
1.简介SharedPreferences是轻量级存储工具,采用的是Key-Value存储方式。一般用于存放App的个性化配置信息、临时保存的片段信息等。SharedPreferences存储键值信息是采用xml文件的形式,保存在/data/data/App包名/shared_prefs/文件名.xml。<!--例子中的存储键-值的xml文件--><?xml versio...原创 2019-08-11 20:14:58 · 409 阅读 · 0 评论 -
Android中ViewPager的使用
ViewPager允许用户左右翻页数据,与之对应的适配器是PagerAdapter。实现ViewPager.OnPageChangeListener接口即可监听ViewPager,想要显示翻页标题栏可以在ViewPager下挂PagerTabStrip或者PagerTitleStrip子节点并在适配器中重写getPageTitle方法。使用步骤如下:建立布局文件,注意名称要写全。<...原创 2019-08-15 16:09:56 · 6972 阅读 · 0 评论 -
Android中AlertDialog的使用
1.简单介绍AlertDialog是安卓中很常用的对话框,只能通过AlertDialog.Builder完成参数设置后才能创建。使用AlertDialog的核心代码及注释如下。AlertDialog.Builder builder = new AlertDialog.Builder(AlertDialogActivity.this);//设置标题builder.setTitle("Dem...原创 2019-08-11 15:19:17 · 372 阅读 · 0 评论 -
Android向上一个Activity返回参数
1.简单说明当下一个Activity收到上一个Activity传来的参数时,我们可能还需要需要向上一个Activity返回一些信息。方法是:前一个Activity打包好数据后调用startActivityForResult(Intent intent, int RequestCode)方法,第二个参数标识请求的唯一性。如果对数据打包不清楚的话参照这篇博文。后一个Activity打包好应答数...原创 2019-08-11 14:38:36 · 1075 阅读 · 0 评论 -
Android通过remoteViews自定义通知
1.简介通过remoteViews我们可以自定义通知推送,但是remoteViews也有许多限制。remoteViews仅支持以下小部件:AnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextClock、TextView;仅支持以下布局:AdapterViewFlipper、FrameLayout、GridLay...原创 2019-08-23 21:27:48 · 1010 阅读 · 0 评论 -
Android静态和动态注册Fragment
Fragment一般只占据一小块地方(比如下面的广告),但是它有自己的生命周期(可以试试重写那些方法来观察一下),下面是静态注册和动态注册使用Fragment的例子。创建自己的Fragment,如MyFragment。布局和代码如下。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:androi...原创 2019-08-16 11:23:05 · 621 阅读 · 0 评论 -
利用Broadcast实现Fragment向Activity传递消息
利用广播可以轻易实现Fragment向Activity传递消息。在Fragment通过广播发送消息,接收页面注册广播接收消息即可。下面是一个例子(当Fragment中的Spinner触发响应事件时,发送广播消息,整个页面的背景颜色改变)。创建自己的Fragment,如MyFragment。代码如下(item_dropdown.xml和item_selected.xml比较简单就不贴了)。...原创 2019-08-16 12:25:44 · 407 阅读 · 0 评论 -
Android菜单栏的使用(弹出菜单)
1.简介PopupMenu如果空间足够,它将显示在定位视图下方,否则显示在其上方。使用步骤:实例化 PopupMenu 及其构造函数,该函数将提取当前应用的 Context 以及菜单应锚定到的 View。PopupMenu popup = new PopupMenu(this, view);使用 MenuInflater 将菜单资源扩充到 PopupMenu.getMenu() 返回...原创 2019-08-13 10:57:11 · 362 阅读 · 0 评论 -
Android中菜单栏的使用(选项菜单)
1.简介菜单是许多应用类型中常见的用户界面组件。要定义菜单,要在项目 res/menu/ 目录内创建一个 XML 文件(如果没有则创建),下面是一个例子,显示效果如图(“更多”也是菜单选项,只是设置了showAsAction属性放到了外面)。<?xml version="1.0" encoding="utf-8"?><menu xmlns:app="http://schem...原创 2019-08-13 09:42:24 · 878 阅读 · 0 评论 -
Android使用TabHost时报错Your content must have a TabHost whose id attribute is 'android.R.id.tabhost'
使用TabHost提示 Your content must have a TabHost whose id attribute is ‘android.R.id.tabhost’ 或者 Your TabHost must have a TabWidget whose id attribute is ‘android.R.id.tabs’ 等错误信息时。改下TabHost的id。使用andro...原创 2019-08-29 11:39:34 · 445 阅读 · 1 评论 -
使用TabActivity创建底部导航栏模板
使用TabActivity创建底部导航栏时套用固定的框架即可,下面是一个例子的主要代码及注释。xml文件。<?xml version="1.0" encoding="utf-8"?><!--根布局必须是TabHost id必须为@android:id/tabhost--><TabHost xmlns:android="http://schemas.and...原创 2019-08-29 18:24:13 · 264 阅读 · 0 评论 -
Android中ToolBar的使用
Toolbar即顶部的导航栏,使用也非常简单。下面是使用步骤。在style.xml中定义一个去掉ActionBar的样式。 <!--关掉ActionBar--> <style name="AppCompatTheme" parent="Theme.AppCompat.Light.NoActionBar"/>修改AndroidManifest.xml中act...原创 2019-08-29 21:23:15 · 295 阅读 · 0 评论 -
解决Android溢出菜单栏不显示图标及设置了android:showAsAction="ifRoom"但不在导航栏显示问题
设置了android:showAsAction="ifRoom"属性但是不在导航栏显示问题。增加命名空间xmlns:app="http://schemas.android.com/apk/res-auto",同时使用app:showAsAction="ifRoom"。设置了icon属性但是不显示图标问题。利用反射调用私有方法setOptionalIconsVisible,让图标显示出来。...原创 2019-08-30 16:43:31 · 1166 阅读 · 0 评论 -
RecyclerView配合StaggeredGridLayoutManager实现瀑布流效果
1.前言利用RecyclerView配合StaggeredGridLayoutManager可以实现类似于淘宝和京东的商品瀑布流效果,下面是一个简单的使用例子。2.例子就不多讲了,直接上示例代码。在页面的布局文件使用RecyclerView。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/andr...原创 2019-09-07 11:21:53 · 1567 阅读 · 0 评论 -
Android控件ProgressBar的使用
1.简介ProcessBar可以显示进度。图一中的黑色部分就是一个ProcessBar,图二中的是进度40%的ProcessBar(示例可能有点丑 )。ProcessBar的xml常用属性:max:指定进度条最大值。process:指定进度条默认值,代码中可以通过setProgress()方法来设置进度。processDrawable:指定进度的图片,不能用一般图片,要用层次图形,参...原创 2019-08-23 18:54:31 · 424 阅读 · 0 评论 -
Android通知推送(解决NotificationService: No Channel found for***问题)
1.简介通知推送的使用方式和AlertDialog的使用方式差不多,都是先用build构造并设置参数,最后由通知服务推送。2.使用当目标sdk版本大于等于26时,按照原来的方法直接弹出消息会报错 ****NotificationService: No Channel found for ****。下面是解决方法。首先要建立通道(也就是设置中的通知类别,如图中的“消息”),示例代码如下。...原创 2019-08-19 21:39:21 · 3730 阅读 · 0 评论 -
Android控件DatePickerDialog的使用
1.简介DatePickerDialog可以弹出一个对话框来供用户选择日期。一般使用下面这个构造函数获取DatePickerDialog对象(第一个参数是设备上下文,不能为null;第二个参数是监听器(实现DatePickerDialog.OnDateSetListener接口,可以为null);第三个参数是弹出对话框的初始年;第四个参数是弹出对话框的初始月(0-11,获取月份时记得加一);第五...原创 2019-08-13 19:50:41 · 652 阅读 · 0 评论 -
Android中SimpleAdapter的使用
1.简单介绍SimpleAdapter配上Spinner,可以在Spinner的列表项中展示多个控件(如文本和图片的组合),显示效果如下图。下面是初始化SimpleAdapter的一个例子。在SimpleAdapter的构造函数中:第一个参数是设备上下文;第二个参数是存放Map的容器,Map里面存放的是原材料;第三个参数是选中时的显示;第四个参数是Map中的key;第五个参数是原材料对应存放...原创 2019-08-09 09:54:52 · 868 阅读 · 0 评论 -
Android基础控件Spinner的使用
1.简单介绍Spinner是一个下拉框(效果如下图),点击它,在提供信息的同时让用户进行选择。Spinner有两种模式,一种是下拉列表的形式,还有一种是弹出对话框的形式,如下图的图一和图二。通过属性spinnerMode可以设置模式,取值有dropdown(下拉列表)和dialog(对话框)。使用ArrayAdaper可以在下拉框中显示纯文本。实现AdapterView.OnItemSelect...原创 2019-08-08 17:45:15 · 1305 阅读 · 0 评论 -
Android工程主要目录和文件
1.前言最近一直在阅读老欧的《零基础到App上线》,打算再仔细看一遍,下面是一些笔记。2.正文一个App的Android工程形式一般如下图。工程下有app和Gradle Scripts两个目录。manifests...原创 2019-08-06 15:25:38 · 1641 阅读 · 0 评论 -
Android基础控件RadioGroup的使用
1.简单介绍RadioGroup可以提供几个选项供用户选择,但只能选择其中的一个。其下面可以横着或者竖着挂几个RadioButton,也可以挂载其他控件(如TextView)。RadioGroup的相应事件一般不由下面的RadioButton响应,而是直接由RadioGroup响应。实现RadioGroup.OnCheckedChangeListener接口即可监听RadioGroup。Radi...原创 2019-08-08 14:16:34 · 13603 阅读 · 0 评论 -
Android基础控件Switch的使用
Switch是一个很简单的控件,只有两种状态,感觉只是升级版的CheckBox(但是原生的依旧很丑 )。通过实现CompoundButton.OnCheckedChangeListener接口就可以监听Switch,但是改变Switch的button属性只会在左边加一个显示按钮(如效果图一),所以就用CheckBox做了一个自定义的Switch(效果如图二,如果感觉按钮的图片太小,可以直接设置Ch...原创 2019-08-08 13:11:15 · 2237 阅读 · 0 评论 -
Android基础控件CheckBox的使用
CheckBox有两种状态,勾选和未勾选,是一个很简单的控件。可以通过实现OnCheckedChangeListener接口来监听CheckBox;如果想更改它的图标的话只需更改它的Button属性即可实现。下面是示例代码。check_box_selector.xml<?xml version="1.0" encoding="utf-8"?><selector xml...原创 2019-08-08 12:18:26 · 1064 阅读 · 0 评论 -
Android中View的基本属性
Android中所有控件和布局都是View直接或间接派生而来,下面是View在xml文件中的基本属性。id:视图的编号。layout_width:指定视图的宽度。layout_height:指定视图的高度。layout_margin:指定视图与周围视图距离(上下左右)。layout_marginTop、layout_marginBottom、layout_marginLeft、layou...原创 2019-08-08 10:10:06 · 1380 阅读 · 0 评论 -
Android Studio中的Project和Module
File->New->New Project 创建项目。相当于eclipse中的workspaceFile->New->New Module创建模块。这里的新模块是指一个单独的App工程,对应于eclipse中的new project。想想我们一般使用eclipse都是先选择workspace然后再在workspace上创建工程就可以理解了。...原创 2019-08-05 16:39:51 · 1741 阅读 · 0 评论 -
Android控件TimePickerDialog的使用
1.简介TimePickerDialog是用于显示日期的对话框,使用也很简单。下面是使用的例子。Calendar calendar = Calendar.getInstance();//第一个参数表示设备上下文 第二个参数表示监听器(实现TimePickerDialog.OnTimeSetListener接口) 最后一个参数表示是否24小时制TimePickerDialog timePic...原创 2019-08-13 20:18:15 · 556 阅读 · 0 评论 -
Android基础控件EditText的使用
1.简单介绍EditText是文本编辑框,用户可以在此输入文本等信息,下图是例子的显示效果。EditText的常用属性如下。inputType:指定文本输入的类型,代码中的方法是setInputType。如果要同时使用多种类型,则通过“|”连接起来。取值如下表。maxLength:指定输入文本的最大长度。该属性无法通过代码设置。hint:指定提示文本的内容,代码中对应的方法是setH...原创 2019-08-09 11:02:07 · 757 阅读 · 0 评论 -
EditText输入完成后自动关闭输入法
有时候我们想输入达到一定长度之后自动关闭输入法(如输入11位手机号之后自动关闭键盘)。下面是实现步骤。EditText并没有直接获取输入法长度的方法。但是我们可以通过暴力反射获取,代码如下。public static int getMaxLength(EditText et) { int length = 0; try { InputFilter[] inputFilter...原创 2019-08-09 11:56:57 · 982 阅读 · 0 评论 -
Android中GridView的使用
1.简介GridView可以在二维滚动网格中显示项目的视图。可以通过实现AdapterView.OnItemClickListener和 AdapterView.OnItemLongClickListener接口来监听,常用xml属性如图一。其中各种拉伸常量以及显示效果如下。常量NO_STRETCH,静止拉伸,对应xml文件中的none。显示效果如图。常量STRETCH_COLUMN...原创 2019-08-14 20:16:56 · 449 阅读 · 0 评论 -
Android中BaseAdapter配合ListView的使用(解决分割线显示问题)
1.简介ListView可显示垂直滚动的视图集合,其中每个视图紧邻列表中的上一个视图。xml的主要属性如下图,其中headerDividersEnabled和footerDividersEnabled属性在使用的时候有很多需要注意的地方(特别是headerDividersEnabled属性,不管你怎么搞,顶部的分割线都不会显示,我是真的搞了一下午,最后发现书的代码有点问题 )。设置分割线需要...原创 2019-08-14 18:34:47 · 791 阅读 · 0 评论 -
Android向下一个Activity传递参数
1.简单介绍利用Intent我们可以从一个页面到另外一个页面(Activity)。这个过程中,我们可以利用Bundle包裹传递消息。Bundle存放数据的结构实际上是Map的映射,我们只需要用put方法把参数放进Bundle,然后再用Intent的putExtras方法把Bundle丢进Intent即可。接收页面接收参数时,先调用getIntent方法获取Intent,然后调用getExtras...原创 2019-08-10 09:21:42 · 532 阅读 · 0 评论 -
Android中BaseAdapter配合Spinner的使用
1.简介BaseAdapter是一个抽象类,实现了ListAdapter和SpinnerAdapter。通过使用BaseAdapter,我们可以在Spinner的列表项中展示更多内容。如果还不懂得使用Spinner,可以参考这里。public abstract class BaseAdapter extends Object implements ListAdapter, SpinnerAd...原创 2019-08-14 11:15:14 · 571 阅读 · 0 评论