Android开发
文章平均质量分 71
放课后小朋友
哔哩哔哩
展开
-
Android BottomSheetDialog横屏模式下布局显示不全/状态栏黑色
引入产品提了个常规需求,从底部弹框显示性别选择框,以前直接用原生AlertDialog或者自定义Dialog,这次想来个不一样的,查看开发文档发现BottomSheetDialog也可以实现,并且自带手势滑动和动画,于是开搞,实现效果如下。效果可以。由于产品需要适配横屏,顺手试了下横屏,然后傻眼了,效果如下。横屏状态下自定义的view没有显示全,需要手动上滑才能完全显示。习惯性点了下BottomSheetDialog源码,发现走onStart时BottomSheetBehavior把状态设置成ST原创 2020-05-31 12:40:44 · 3089 阅读 · 1 评论 -
Android ListView动画(逐行显示动画效果)
1、如果想在ListView中item条目出现时显示动画效果,那么可以使用系统的,或者是自定义的都可以,下面就是一个使用自定义动画的ListView动画演示: android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height=原创 2015-12-21 11:57:39 · 4559 阅读 · 1 评论 -
Android ListView的性能优化(ViewHolder和HashMap)
一、对于ListView的优化,一般步骤如下:1、复用convertView:首先讲下ListView的原理:ListView中的每一个Item显示都需要Adapter调用一次getView的方法,这个方法会传入一个convertView的参数,返回的View就是这个Item显示的View。如果当Item的数量足够大,再为每一个Item都创建一个View对象,必将占用很多内存,创建View原创 2015-12-21 11:50:14 · 1552 阅读 · 0 评论 -
ListView的点击事件、长按事件监听
一、点击事件 list.setOnItemClickListener(new OnItemClickListener() { @Overridepublic void onItemClick(AdapterView arg0, View arg1, int position, long id) { //do something? } });原创 2015-12-21 11:38:01 · 942 阅读 · 0 评论 -
ListView+BaseAdapter的使用方法
一、概念:listview就是一种逐行显示内容的控件,listview是遵循MVC设计模式的,二、经验:比方说textview空间中有显示内容的属性setText,那么listview控件想要显示自己的内容,也会相应的有显示内容的属性,这个属性就是“适配器”adapter,使用lv.setAdapter(adapter)设置显示内容,adapter是一个接口,实现该接口的需要复写的原创 2015-12-21 11:32:38 · 916 阅读 · 0 评论 -
ListActivity的使用方法
一般的activity都会在java文件中引入相对应的xml布局文件。但是在“比方说系统设置界面,黑色的那种类似于listview的界面”,可以使用ListActivity这个类来实现,当然因为相对应的显示界面一般只有textview文字内容,所以需要定义一个关于textview的item的xml文件布局。然后将设置相应的adapter,将实现定义的String[]数组内容放进去,下面将会原创 2015-12-21 10:10:36 · 1050 阅读 · 0 评论 -
Android JSON解析(JSONObject和JSONArray)
package com.example.tt;import java.util.HashMap;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bund原创 2015-12-18 17:51:01 · 636 阅读 · 0 评论 -
Android JSON的封装(JSONObject,JSONStringer两种方法)
创建如下所示的一个json文件:{ "phone" : ["12345678", "87654321"], // 数组 "name" : "yuanzhifei89", // 字符串 "age" : 100, // 数值 "address" : { "country" : "china", "province" : "jiangsu" }, // 对象 "marr原创 2015-12-18 17:21:14 · 7370 阅读 · 0 评论 -
Android BroadcastReceiver获取用户拨打的电话号码
一、步骤:1、注册一个广播接收者在清单文件中,内容如下: 2、创建一个继承了BroadcastReceiver类的自定义类,代码如下:import android.content.BroadcastReceiver;import android.content.Context;原创 2015-12-16 16:44:26 · 4071 阅读 · 1 评论 -
LayoutInflater和findViewById的区别
一、概念:inflater是膨胀的意思,在Android中,应该是“扩展”的意思,LayoutInflater的作用类似于findViewById(),不同点是,LayoutInflater是用来寻找布局文件并且进行实例化的一个方法,而findViewById是具体到一个控件的对象,所以两者的范围是不相同的。二、代码演示:LayoutInflater inflater = (Lay原创 2015-12-16 11:39:04 · 542 阅读 · 0 评论 -
Android IntentService
1、相对于Service,IntentService有什么特点?普通的service ,默认运行在ui main 主线程,Sdk给我们提供的方便的,带有异步处理的service类,异步处理的方法OnHandleIntent(),OnHandleIntent() 处理耗时的操作2、下面是一段代码演示:(1)、点击启动IntentService:startService(n原创 2015-12-16 14:46:10 · 350 阅读 · 0 评论 -
ImageView的ScaleType属性
当其属性是:1、matrix:是保持原图大小、从左上角的点开始,以矩阵形式绘图。2、fitXY:是将原图进行横方向(即XY方向)的拉伸后绘制的。3、fitStart:是将原图沿左上角的点(即matrix方式绘图开始的点),按比例缩放原图绘制而成的。4、fitCenter:是将原图沿上方居中的点(即matrix方式绘图第一行的居中的点),按比例缩放原图原创 2015-12-15 17:50:44 · 318 阅读 · 0 评论 -
Android ListView分页显示简单模拟实现
下面是一段listview分页显示的实力代码,很简单模拟出来分批加载数据的listview内容。package com.notice.moredate;import java.util.ArrayList;import java.util.HashMap;import android.app.Activity;import android.os.Bund原创 2015-12-21 13:45:39 · 594 阅读 · 0 评论 -
Android ListView缓存对象
一、ListView列表控件每次滑动都会创建一个对象,那么为了复用缓存,可以使用ConverView参数,这样如果不想看到的item就会被回收,节省内存。二、convertView参数的功能怎么实现?convertView缓存对象,当滑动屏幕的时,子条目被隐藏,会被convertView给接受。三、convertView示例代码如下(主要看getView方法即可):im原创 2015-12-21 14:18:29 · 583 阅读 · 0 评论 -
Android ListView的回弹效果
使用动态布局实现该方法,重写ListView中的scroll方法可以实现该ListView的回弹效果:1、重写ListView中的方法:package com.isoftstone.pop;import android.annotation.SuppressLint;import android.content.Context;import android.util.Att原创 2015-12-21 14:22:11 · 1563 阅读 · 0 评论 -
Android通过反射调用获取内置存储和外置sd卡根路径(全版本适配)
model如下,功能一目了然:public class FileInfo { // id value in DB public long id; // true if file is a directory public boolean isDir; // true if file is hidden public boolean isHidden...原创 2019-03-25 18:55:57 · 485 阅读 · 0 评论 -
AccessibilityService帮你实现Android全局悬浮窗
引入最近在做Android大屏,70寸全触摸,基于Android 5.0的AOSP开发(手动落伍=_=),屏蔽三大虚拟金刚键,所以需要在屏幕两边固定侧边栏代替虚拟键并实现开机自启.之前并没有开发过这种小工具,自然没啥经验,第一反应当然是去应用市场下载类似App体验一把,使用3个三方后发现它们都需要用户手动打开系统中的「无障碍」功能来模拟用户虚拟按键的点击事件,通过该突破口google一把,发...原创 2019-03-08 18:46:31 · 4610 阅读 · 3 评论 -
安卓8.0系统通知NotificationManager
开始从Android 8.0开始,使用系统通知Notification需要再设置下Channel,这就导致了版本兼容问题.为了解决这个,抽空写了个工具类,实现8.0系统上下都可实现正常通知功能.原型以今日头条为例,每次打开应用时,通知栏都会显示今天比较火的新闻,并且会显示一张隐藏的图片,具体效果如下2张:通知合并时通知展开时实现我觉得还是直接上代码比较好,没有使用m...原创 2018-11-14 15:14:46 · 4993 阅读 · 3 评论 -
AOSP源码Gallery2和Launcher3导入Android Studio
本文适用于有一定Android源码编译能力的开发者,对AOSP没有什么概念的同学可以参考涅槃1992发表的文章:自己动手编译Android源码(超详细),正如作者所说,超详细,也很简单.引入我之前一直从事App开发,换工作后公司正在研发一款类似百度小度的带屏智能硬件,所以需要定制Android系统.花了一个月熟悉Linux开发环境和Android8.1的源码结构后,我接下了相册Galler...原创 2018-10-17 16:17:36 · 1346 阅读 · 0 评论 -
5分钟适配Android P和Android 8.0刘海屏,可能全网最全总结
前言刘海屏兴起的原因就不说了,只能说17年是最差劲的一届智能机了,说多了都是泪。既然局面已经这样了,咱们就来聊聊怎么解决刘海屏带来的屏幕适配问题。Android上的刘海屏出现在8.0系统上,小米、华为、vivo、oppo、一加、锤子等都有自家刘海屏手机,但Google是在Android P上才对其进行了适配,那对于开发者,8.0的刘海屏手机怎么适配呢?Android P呢?不急,下面我会通俗易...原创 2018-08-27 14:34:38 · 9641 阅读 · 1 评论 -
Android Retrofit Http加密(无证书加密)
前提:本文基于Retrofit + okhttp(下面代码可以直接复制使用!)一、Retrofit常规使用如下:OkHttpClient okHttpClient =new Builder().readTimeout(READ_TIME_OUT, TimeUnit.SECONDS).connectTimeout(CONNECT_TIME_OUT, TimeUnit.SECONDS).c...原创 2018-06-08 11:13:23 · 905 阅读 · 0 评论 -
Android WebSocket加密
前提:本文基于Java-WebSocket-1.3.4.jar需求:公司App中有个WebSocket长链接需要加密,但现阶段不需要CA证书,实现一下。Java-WebSocket.jar怎么使用,相信不用我多说了,不会的可以百度下,不难,下面主要讲下怎么无证书加密。下面是一个加密工具类SSLSocketFactoryUtil:第一张第二张引入的包使用方法:用WebSocketClient的对象调...原创 2018-06-08 11:10:01 · 1155 阅读 · 0 评论 -
Android AsyncTask介绍和一个简单的小例子
一、AsyncTask的优点:1、简单,快捷2、过程可控二、AsyncTask的缺点:1、在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来三、Handler的优点:1、结构清晰,功能定义明确2、对于多个后台任务时,简单,清晰四、Handler的缺点:在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)五、介绍:原创 2017-11-23 23:29:44 · 492 阅读 · 0 评论 -
Android ListView使用convertView解决内存溢出问题(推介使用recyclerview,listview已过时)
比方说在加载各种图片的时候,listview不及时回收的话,可能会造成内存溢出,这个时候就是看getview方法的时候了。public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if(convertView原创 2015-12-22 14:27:19 · 3106 阅读 · 0 评论 -
Android7.0 popupwindow位置错误解决办法
作为一名开发,同时也是一名搞机人士,某天看到自家产品在Android7.0系统上面的popupwindow位置出毛病了,如下图:然后看网上说是系统级bug,那就自定义一个popupwindow所有版本通用,如下:import android.graphics.Rect;import android.os.Build;import android.view.View;im原创 2017-06-26 17:40:20 · 2300 阅读 · 0 评论 -
imageswitcher+gallay实现相册功能
说明:使用ImageSwitcher控件+gallary控件可以实现点击下方gallary控件更换上面imageswitcher控件图片展示的功能。代码演示:public class mainactivity extends Activity implements OnItemSelectedListener, ViewFactory { private ImageSwi原创 2015-12-15 17:46:26 · 540 阅读 · 0 评论 -
FloatingActionButton(FAB)的官方使用方法
一、FloatingActionButton——FAB使用非常简单,你可以指定在加强型FrameLayout里面——CoordinatorLayout,这个我们后面再讲。 关于FAB的使用,你可以把它当做一个button即可。二、布局代码: android:id="@+id/fab" android:layout_width="wrap_conten原创 2015-12-15 10:36:53 · 2957 阅读 · 0 评论 -
Android图片、文字国际化
一、首先明白什么叫“国际化”?答:就是自己的应用程序在不同的国家或者地区打开的时候会出现相应的图片或者文字,这样就叫“国际化”。二、实际上自己目前涉及到的国际化的呢容就两种:“文字”、“图片”三、比方说为了创建“文字的国际化”,那么可以将String文件分别copy对应的国家的文件夹中,比方说“中国”的文件夹、“美国”的文件夹。然后再改变系统语言的时候,相应的就会改变自原创 2015-12-14 14:24:18 · 701 阅读 · 0 评论 -
Android-AsyncTask简单介绍和使用
一、AsyncTask的优点:1、简单,快捷2、过程可控二、AsyncTask的缺点:1、在使用多个异步操作和并需要进行Ui变更时,就变得复杂起来三、Handler的优点:1、结构清晰,功能定义明确2、对于多个后台任务时,简单,清晰四、Handler的缺点:在单个后台异步处理时,显得代码过多,结构过于复杂(相对性)五、介绍:原创 2015-12-14 14:00:48 · 234 阅读 · 0 评论 -
Activity生命周期各个阶段实现流程
正常启动onCreateonStartonPostCreateonResumeonPostResume转向下一个activityonPauseonStop从下一个activity返回当前(按机器返回键)onRestartonStartonResumeonPostResume转向上一个activity(按机器返回键)onPauseonS原创 2015-12-14 13:42:29 · 517 阅读 · 0 评论 -
9.png是什么?怎么用?
一、疑问:刚开始自己一直不明白,什么是9.png。二、解释:就是一个谷歌官方规定的png格式的图片,可以实现随着图片上内容的增加自动增加图片的长和宽,这样的一个图片格式就是9.png图片格式,图片会随着图片上文字的内容的增加而加大尺寸,所以可以适用的场合有“聊天软件”中,比方说微信,qq上图片上的对话。三、使用:在Android studio里面双击图片后可以对原创 2015-12-14 11:44:48 · 718 阅读 · 0 评论 -
Android目录结构简介
工程的目录结构:src: 存放java代码的.gen: 存放的自动生成的文件, R文件.project.properties: 工程引用的相关信息, target指定工程所采用开发工具包的版本.libs: 存放工程所依赖的jar包.assets: 资产目录, 存放工程或程序所需要的媒体文件和图片信息. 原封不动的打包在应用程序中.bin: 工程在编译时产生的临时文件, 最终原创 2015-12-14 14:33:14 · 313 阅读 · 0 评论 -
Activity状态保存
一、一般来说, 调用onPause()和onStop()方法后的activity实例仍然存在于内存中, activity的所有信息和状态数据不会消失, 当activity重新回到前台之后, 所有的改变都会得到保留. 二、但是当系统内存不足时, 调用onPause()和onStop()方法后的activity可能会被系统摧毁, 此时内存中就不会存有该activity的实例对象了. 如原创 2015-12-14 13:50:46 · 285 阅读 · 0 评论 -
Activity生命周期一般解析
一、onCreate() ---初始化activityonStart() ---注册变量、对一些资源和状态的操作保存,注册广播【一般情况下】onResume()---调用一些数显UI的数据,每当activity调用到此方法时,刷新一下UI控件的状态,注册广播onPause() ---提交没有改变的修改到持久数据onStop() ---反原创 2015-12-14 13:39:49 · 393 阅读 · 0 评论 -
Android-ArrayAdapter使用方法
一、简介:比方说像那个“网易新闻客户端”中,从左往右滑动将会出现slidingmenu菜单,里面有各种各样的条目,实际上就是继承的ArrayAdapter实现的,因为继承ArrayAdapter实现的都是一些简单的文本内容的展示,是有限的内容,不像BaseAdapter那样需要实现的方法很多。所以这种情况下一般使用的是ArrayAdapter继承的,所以自己要注意了!二、示例代码:原创 2015-12-14 14:52:36 · 897 阅读 · 0 评论 -
Android5.0风格EditText输入框效果
一、android5.0上面有一个EditText填充效果:点击EditText之后,其中hint文字会向上面走动。然后可以填写内容。二、实现原理:在EditText外面嵌套一层TextInputLayout即可。三、实现代码:布局代码: android:id="@+id/til_pwd" android:layout_width原创 2015-12-14 14:17:13 · 4397 阅读 · 0 评论 -
Activity与Activity之间的信息传递、传值
一、Activity之间的跳转,没有传值:((Button) findViewById(R.id.Notepadv1)).setOnClickListener( new OnClickListener() { public void onClick(View v) { startActivity(new Intent (MyAndroidAppActivit原创 2015-12-14 13:47:20 · 1155 阅读 · 0 评论 -
在splash页面添加AlphaAnimation透明度渐变动画效果
1、要求:比方说我想在splash页面添加一个过渡动画,可以使用AlphaAnimation透明度渐变动画效果,复写其中的监听事件可以做到当动画结束时,跳转到指定activity页面,比方说下面就是几行示例代码:public class SplashActivity extends BaseActivity {/* 标识 */protected static fin原创 2015-12-14 11:41:04 · 740 阅读 · 0 评论 -
Android中Activity“四种”启动模式+
standard模式, 是默认的也是标准的Task模式,在没有其他因素的影响下,使用此模式的Activity,会构造一个Activity的实例,加入到调用者的Task栈中去,对于使用频度一般开销一般什么都一般的Activity而言,standard模式无疑是最合适的,因为它逻辑简单条理清晰,所以是默认的选择。而singleTop模式,基本上于standard一致,仅在请求的Activi原创 2015-12-14 11:51:54 · 343 阅读 · 0 评论 -
Android后台线程和UI线程的交互
一般是五种交互方式:1、handler2、Activity.runOnUIThread(Runnable)3、View.Post(Runnable)4、View.PostDelayed(Runnabe,long)5、AsyncTask如果当情形比较复杂的时候,那么一般使用的都是handler了,可以应对复杂情形。如果情形比较简单的话,那么直接使用Activity.run原创 2015-12-14 14:28:28 · 511 阅读 · 0 评论