![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
goodness-欢
这个作者很懒,什么都没留下…
展开
-
TextVIew折叠展示
TextView折叠展示一段文字效果图展开前展开后public class TextViewLinesUtils { /** * 设置textView结尾...后面显示的文字和颜色 * @param context 上下文 * @param textView textview * @param minLines 最少的行数 * @param originText 原文本 * @param endText 结尾文字 *原创 2020-11-12 17:18:51 · 2064 阅读 · 3 评论 -
Retrofit上传图片
Retrofit上传图片就两个思路1.ApiService @Multipart @POST fun uploadImage(@Url url: String, @Part file: MultipartBody.Part?): Call<ResponseBody>2.生成MultipartBody.Part val file = File(picture) // picture是图片路径,通过路径生成file文件 val requestBo原创 2020-11-11 17:34:41 · 633 阅读 · 0 评论 -
Android Toolbar和状态栏的重叠解决
在项目中可能会使用到沉浸式的状态栏有一个库StatusBarCompat比较好用,导入依赖需要注意的地方就是,在使用这个库的时候,可能会遇到toolbbar和状态栏发生重叠的现象。解决方法有两个1.找到你布局中的toolbar,加上两个属性,图中红色部分2.用代码重写设置你的toolbar的高度,找到toolbar控件,作为参数传入下面的方法 public void setStatusBarHeight(View view) { ViewGroup.LayoutPar原创 2020-10-27 10:18:10 · 1620 阅读 · 0 评论 -
Recyclerview的一个容易被忽略的方法getAdapterPosition
问题在Recyclerview实现的列表实现点击事件,点击的时候,根据不同的位置position来操作。 content2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LogUtils.d("ShopCartItemType onItem原创 2020-10-14 17:24:04 · 1323 阅读 · 0 评论 -
Android 启动页全面屏的适配
启动页全面屏的适配为了能够避免一个短暂的黑屏或白屏现象,我们都会在闪屏页面(或者启动页面)的theme上加上一张背景图。但是如果不适配,在全面屏的手机上会有拉伸的现象。解决方法1.在清单文件中配置,全面屏的一些参数 <!-- 允许绘制到oppo、vivo刘海屏机型的刘海区域 --> <meta-data android:name="android.max_aspect" android:value="2.原创 2020-09-29 16:04:10 · 1142 阅读 · 0 评论 -
Android RecycleView + GridLayoutManager 实现一个复杂的布局
效果图要实现这么一个布局有很多种方式,这里介绍一个Recyclerview+GridLayoutManager多布局的方法来实现。思路1.首先要明白整体的一个布局结构,从上到下分别为:轮播图的头布局,热门主题,推荐模板,广告图,图片主题,最近热门。所以我们可以设置几个type对应不同的布局。 public static final int ITEM_HEADER = 1; // 头布局 public static final int ITEM_HOT_SUBJECT = 2; //原创 2020-09-25 15:49:52 · 3590 阅读 · 2 评论 -
Android代码重构:Redundant local variable冗余的局部变量
Redundant local variable冗余的局部变量1.点击Analyze,选择Run Inspection by Name,输入Redundant local variable,出现以下结果2.找到冗余的局部变量,进行修改就可以了,比如下面的return一个对象,如果不复杂,就直接return,不用写一个局部变量接收,然后再返回。修改前:修改后:...原创 2020-09-23 14:00:55 · 1568 阅读 · 0 评论 -
Android代码重构------Overly long method过长的函数方法
快速迭代开发的过程中,往往就写的很随意。版本迭代的越多,代码的问题就越多。当有时间的时候,需要去审阅自己写的代码,看看哪里是需要重构的。重构代码之一:解决过长的函数方法Overly long method我们都会在函数方法里面去实现我们的逻辑,容易出现的问题是,一个函数方法我们可能会写很多行。使用studio里面的Analyze来检测哪些函数方法过长。有两个地方可以调用Analyze1.studio最上方的工具栏2.在当前得代码点击右键3.点击Analyze,选择Run InSecptio原创 2020-09-22 14:44:24 · 270 阅读 · 0 评论 -
Gson解析泛型T的数据
Gson解析泛型T的数据Gson解析泛型的数据有两种情况,一个是解析泛型对象,一个是解析泛型的List。1.解析泛型对象先要自定义一个类实现ParameterizedType这个接口中的方法public class GsonTypeTokenObjectUtils implements ParameterizedType { private final Class raw; private final Type[] args; public GsonTypeTokenO原创 2020-08-31 17:17:14 · 3245 阅读 · 0 评论 -
JSON解析,解析key是数字的情况
JSON解析key是数字的情况在返回的json数据里面,可能会包含有那种key是数字的情况,如下所示{ "code":0, "data":{ "id":"200", "company_id":"10018", "room_id":"6", "anchor_id":"5", "view_count":0, "people_buy":0, "title":"参加参考参考看", "status":2, "content_intro原创 2020-08-28 16:33:21 · 2778 阅读 · 0 评论 -
Android webview嵌套一个h5的聊天页面,解决获取键盘的时候,布局整体上移
需求:一个Webview嵌套h5的聊天页面,当弹出键盘的时候,整体布局上移。如果不做处理,弹出的键盘会遮挡输入框,让人看不见输了什么内容。解决1:用AndroidBug5497Workaroundpublic class AndroidBug5497Workaround { private final Activity activity; // For more information, see https://code.google.com/p/android/issues/de原创 2020-07-20 15:55:10 · 1233 阅读 · 1 评论 -
Android webview上传图片
Webview加载h5页面,h5上传图片需求是点击h5页面中的按钮,可以调起原生的图片库或者相机,然后上传图片。ios天然适配不用做任何操作,Android必须自己写逻辑去适配h5。Android webview适配h51.重写WebchromeClient里面的两个方法 webView_common.setWebChromeClient(new WebChromeClient(){ // 低版本的Android执行这个方法(Android < 5.0)原创 2020-07-06 14:42:00 · 1175 阅读 · 0 评论 -
Android跑马灯遇到的问题(有些手机有效果,有些手机没效果)
跑马灯的记录Android跑马灯的实现很简单,有android系统提供的api就可以实现。问题在于在实际的手机上运行的时候,有一些手机可以有效果,有一些手机没效果。所以这个问题可能每个人遇到的情况不一样,我这里说说我遇到的情况的解决办法,不一定对你有用,但是我用了之后,是解决了。解决方法1.xml布局文件 <com.flj.latte.ec.widget.MarqueTextView android:id="@+id/item_原创 2020-06-22 14:07:27 · 698 阅读 · 0 评论 -
ConstraintLayout布局里的一个属性app:layout_constraintDimensionRatio
ConstraintLayout这是一个约束布局,可以尽可能的减少布局的嵌套。有一个属性特别好用,可以用来动态限制宽或者高app:layout_constraintDimensionRatio关于app:layout_constraintDimensionRatio参数app:layout_constraintDimensionRatio=“h,1:1”表示高度height是动态变化的,然后比例是 width / heightapp:layout_constraintDimensionRatio=原创 2020-06-18 16:09:13 · 4271 阅读 · 0 评论 -
Android activity跳转的时候,会有页面的残影
Android Activity跳转,会有页面的残留阴影在项目中的一个简单的Activity跳转出现了一个问题, A跳转到B会有A的残留阴影页面 。一般来说Activity的跳转非常简单: A跳转到B,然后finish掉A1.startActivity(new Intent(xxx.context,xxxx.class));2.finish();解决办法1.A跳转到B再快速跳转到C;可能中间会出现B的残影如果在B的OnResume中进行页面跳转,onResume是展示界面时走的生命流程,如果on原创 2020-05-11 11:31:18 · 3149 阅读 · 0 评论 -
Android模拟器的检测
Android模拟器的检测需求:最近有一个需求,要检测出模拟器,防止恶意刷流量刷注册。1.基于特征属性来检测模拟器,比如IMSI,IDS,特殊文件等等。这个方案局限性太大,貌似现在大部分模拟器默认就是修改了的,还不需要人为的去修改。 经过测试,发现如下图所示。 如果是模拟器的话,这些特殊值应该返回true,比如DeviceIDS,Build。可是居然返回了false,说明特殊值的检测已经没有任何原创 2017-05-26 15:43:02 · 5894 阅读 · 1 评论 -
Android ToolBar+DrawerLayout的实现
实现思路: 1.关联相应的依赖包 compile ‘com.android.support:appcompat-v7:25.3.1’2.主布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"原创 2017-04-06 17:19:05 · 328 阅读 · 0 评论 -
Android SnackBar
SnackBar是一个新控件,它的作用是类似Toast的。如果需要一个弹出消息提示,可以考虑用SnackBar替换Toast。1.SnackBar有一些交互动画,那么父布局最好是android.support.design.widget.CoordinatorLayout<?xml version="1.0" encoding="utf-8"?><android.support.design.wi原创 2017-04-07 17:39:41 · 369 阅读 · 0 评论 -
ViewPager+fragment实现切换页面(一)
如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。原创 2015-03-12 15:11:19 · 900 阅读 · 0 评论 -
Imageview在百度地图中实现点击事件
1.首先第一步,需要声明的全局有关类的引用private BMapManager mBMapMan;private MapView mMapView;private MapController mMapController;private RadioGroup radiogroup;private RadioButton normalview;private RadioBu原创 2014-05-10 10:58:34 · 1245 阅读 · 0 评论 -
Android之Intent基本使用
Intent机制是来协助应用之间的交互和通讯,Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述。Intent的用途启动Activity和Service在Android系统上发布广播消息广播消息可以是接收到特定数据或消息,也可以是手机的信号变化或电池的电量过低等信息。Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来原创 2014-03-28 22:30:10 · 617 阅读 · 0 评论 -
Android消息处理机制初步理解
1.MessageQueue 消息队列,存放Message的地方,按照FIFO的规则执行。每一个线程只可以拥有一个 MessageQueue。在创建Looper对象时会创建一个MessageQueue对象。MessageQueue对象不需要我们自己创建,而是有Looper对象对其进行管理,一个线程最多只可以拥有一个MessageQueue。我们可以通过Looper.myQueue(原创 2014-04-15 22:25:04 · 639 阅读 · 0 评论 -
Android之LinearLayout学习
LinearLayout(线性布局)1.将控件排列为一行或一列,这取决于它的方向orientation 属性设置。线性布局分为水平线性和垂直线性二者的属性分别为: android:orientation= " horizontal " 水平线性布局 android:orientation= "vertical" 竖直线性布局2.android:gravity作用是控制原创 2014-03-31 10:32:07 · 580 阅读 · 0 评论 -
Android service初学
Service作为Android四大组件之一,在每一个应用程序中都扮演着非常重要的角色。它主要用于在后台处理一些耗时的逻辑,或者去执行某些需要长期运行的任务。必要的时候我们甚至可以在程序退出的情况下,让Service在后台继续保持运行状态。原创 2014-04-15 22:12:39 · 767 阅读 · 0 评论 -
android:gravity和android:layout_gravity的区别
1.android:gravity有两个作用。一个是设置控件中的文本内容的位置。如下所示,文本中的你好内容居中显示: android:layout_width="match_parent" android:layout_height="wrap_content" android:text="你好"原创 2014-04-01 22:43:08 · 1860 阅读 · 0 评论 -
RelativeLayout的理解
1.和父元素对齐属性: (参数值为true) android:layout_centerHrizontal 水平居中 android:layout_centerVertical 垂直居中 android:layout_centerInparent 相对于父元素完全居中 android:layout_alignParentBot原创 2014-04-02 22:47:51 · 736 阅读 · 0 评论 -
TableLayout的理解
表格布局模型以行列的形式管理子控件,每一行为一个TableRow的对象,当然也可以是一个View的对象。TableRow中可以添加子控件,每添加一个为一列。在TableLayout中,TableRow子控件宽高自动默认,除非要自定义,否则不用定义width,height。默认值如下所示:android:layout_width="match_parent"android:lay原创 2014-04-03 12:23:30 · 1278 阅读 · 0 评论 -
Android之BroadcastReceiver基础学习
1.Android广播机制的理解在 Android 里面有各种各样的广播,比如电池的使用状态,电话的接收和短信的接收都会产生一个广播,应用程序开发者也可以监听这些广播并做出程序逻辑的处理。广播机制最大的特点就是发送方并不关心接收方是否接到数据,也不关心接收方是如何处理数据的。(举个简单的例子,当你在开车时收听交通道路广播,它会告诉你某些路段的路况如何,比如堵车等等,但它不管你是否接受到没有原创 2014-04-18 21:45:25 · 572 阅读 · 0 评论 -
Android之Status bar notification基础学习
Status bar notification添加一个icon到系统的状态栏中(可选择是否有文本信息),添加一段信息到“Notification”窗口中。 status bar notification用于后台运行的服务需要告知用于一些事件并且得到用户的响应的情况下。后台运行的服务为了及时得到用户的响应不应该自己启动一个activity。而应该创建一个用户选择后可以启动activity的st原创 2014-04-18 21:29:46 · 2661 阅读 · 0 评论 -
Android之openFileoutput和openFileinput
openFileOutput和openFileinput来保存读取文件。openFileOutput(String name,MODE)方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data//files目录。第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE原创 2014-04-19 22:24:41 · 6707 阅读 · 0 评论 -
Android之SharedPreferences的基本用法
本质:通过Key-value(键值对)来存储一些轻量级的数据,一些配置信息,如用户名、密码、姓名、电话等等之类的注册性信息。 保存数据的用法1.实例化SharedPreference对象,第一个参数是保存的文件名,第二个参数是保存的类型。SharedPreferences sp=getSharedPreferences("info",MODE_PRIVATE);2.实例化Edi原创 2014-04-20 18:00:56 · 959 阅读 · 2 评论 -
Android一个简易的登录界面
在学习了TextView,EditText,Button和Realtivelayout,linearlayout等常见布局后就可以实现一个简单的登录界面设计。至于像QQ登录界面和其他比较好看的登录界面,还需要进一步学习一下才能设计出来。1.界面布局代码 LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro原创 2014-03-25 16:27:54 · 10741 阅读 · 0 评论 -
Android之TimePicker和TimePickerDialog
TimePikcer的实现:通过OnTimeChangedListener()方法中的OnTimeChanged方法实现。实例代码如下:public class MainActivity extends Activity {private TimePicker tp; @Overrideprotected void onCreate(Bundle savedInstan原创 2014-04-25 13:41:19 · 1457 阅读 · 0 评论 -
Android之DatePicker和DatePickeDialog基本用法
本篇文章介绍DatePicke和DatePickerDialog的使用方法。DatePicker实例:public class MainActivity extends Activity {//声明全局变量的引用private DatePicker datepicker;private TextView tv;int mYear;int mMonth;int mDa原创 2014-04-25 13:40:43 · 2302 阅读 · 0 评论 -
Android之GridView初步认识
GridView是一项显示二维的viewgroup,可滚动的网格。一般用来显示多张图片。GridView的常用属性: android:stretchMode="columnWidth" //缩放与列宽大小同步 android:columnWidth="100dp" //列的宽度 android:numColumns="3"//设置列数 android:h原创 2014-04-26 20:15:35 · 759 阅读 · 0 评论 -
ExpandableListView的基本用法
QQ上的好友列表在Android怎么实现,有一个最简单的方法,那就是ExpandableListView,下面简单介绍一下ExpandableListview的用法。 先看看效果图,没有找到大小合适的图片,所以凑合着看吧。 一、准备工作(界面,和需要的数据) xml version="1.0" encoding= "utf-8"?原创 2015-03-10 10:41:02 · 576 阅读 · 0 评论 -
实例demo理解面向接口思想
浅显的理解面向接口编程原创 2015-03-11 17:51:13 · 520 阅读 · 0 评论 -
Android之Activity生命周期的理解
1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。4.当前Act原创 2014-03-29 20:50:39 · 707 阅读 · 0 评论