- 博客(39)
- 资源 (7)
- 收藏
- 关注
原创 Android给View设置margin值
1.如果该View的父控件为RelativeLayout,设置margin如下:ImageView image = (ImageView) findViewById(R.id.main_image);RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(image.getLayoutParams());lp.setMargins(50, 100, 0, 0);image.setLayoutParams(lp);如果
2020-08-19 17:36:48
2775
原创 Android TabLayout页签少占不满屏幕宽度的问题
针对TabLayout页签少,不填充屏幕宽度的问题,网上百度的答案,基本上均为:<android.support.design.widget.TabLayout android:id="@+id/tl_tab_layout" android:layout_width="match_parent" android:layout_height="72px" app:tabIndicatorHeight="0px" app
2020-08-19 17:22:22
1095
1
原创 Android开发总结II
1.预览RecyclerView效果 假设item的布局为:item_layout 在RecyclerView里添加属性:<android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="250dp" android:layout_height="150dp" android:layout_gravity="center_horizontal" a...
2020-07-29 15:48:24
226
原创 Kotlin学习教程推荐
由于Google于2017年宣布Kotlin成为Android官方开发语言,因此趁空档学习了下,还是有不少收货,在网上找了些学习的教程感觉还不错,集中推荐给大家。1.Runoob上Kotlin 教程2.Kotlin语言开发和函数式编程3.Kotlin教程--史上最全面、最详细的学习教程,持续更新中......
2019-12-23 14:02:08
290
原创 Kotlin中DCL单例实现
class KLazilyDCLSingleton private constructor() : Serializable {//private constructor()构造器私有化 fun doSomething() { println("do some thing") } private fun readResolve(): Any {//防止...
2019-12-23 13:54:43
438
原创 Android自定义拍照拍视频
Android自定义拍照拍视频,其功能类似于Android设备自带的相机功能,能够进行前置、后置拍照、拍视频,并对照片和视频进行保存。参考如下:1.谷歌camera2的详细demo2.android camera2教程的详细介绍,共分为四个章节由于谷歌提供的demo,只是单纯的用后置摄像头进行拍照、拍视频,没有前置,因此基于谷歌的demo做了修改,使其能够进行前置后置拍照、拍视频,其他...
2019-12-13 18:40:05
706
原创 Android实现本地图片、视频左右镜像翻转
因项目预研需要,采用android camera2进行前置、后置摄像头拍照、拍视频,在用前置摄像头进行拍照时,照片预览是正的,保存本地照片也是正的,只不过照片里的内容进行了左右镜像,现在需要将照片里的内容再左右镜像回来,找了很多的方法,以下两种亲测可行:第一种:Bitmap oldMap = BitmapFactory.decodeFile(mFile.getAbsolutePath()...
2019-12-12 18:28:33
8001
1
原创 Android自定义dialog主题样式解析
在自定义dialog时,需要实例化dialog的主题样式,具体可以参考以前的博客。详细说明如下:<style name="dialog" parent="@android:style/Theme.Dialog"> <!--边框--> <item name="android:windowFrame">@null</i...
2019-10-30 16:36:58
1620
原创 Android中res下anim和animator文件夹区别与总结
1、anim文件夹anim文件夹下存放tween animation(补间动画)和frame animation(逐帧动画)逐帧动画: ①在animation-list中使用item定义动画的全部帧,并指定各帧的持续时间 ②将xml文件作为View控件的背景 ③AnimationDrawable animationDrawable = (AnimationDr...
2019-07-19 17:48:25
2759
原创 Android TextView背景颜色、文字颜色按压效果
TextView按压效果如下: 1.未点击时,字体颜色为黑色,背景为系统默认颜色; 2.点击时,字体颜色为绿色,背景为粉色。布局文件:res/layout/activity_main.xml<TextView android:layout_width="match_parent" android:layout...
2019-07-05 18:35:20
4383
原创 Android几个好用插件推荐
1.Android Parcelable code generatorJavaBean序列化,快速实现Parcelable接口。实现Parcelable就是为了进行序列化,那么,为什么要序列化?1)永久性保存对象,保存对象的字节序列到本地文件中;2)通过序列化对象在网络中传递对象;3)通过序列化在进程间传递对象。2.JsonOnlineViewer在Android St...
2019-05-31 16:37:27
2238
1
原创 Android相关知识记录
以下内容均为平时项目中用到的知识点,纯属个人记录,不喜勿喷~1、通信框架:Retrofit2 + Okhttp3 + Rxjava22、View的绑定工具:ButterKnife(插件Zelezny)3、权限处理:EasyPermissions,PermissionsDispatcher4、侧滑:SwipeLayout, 仿QQ侧滑菜单:RecyclerView侧滑菜单,长按拖拽,...
2019-04-01 14:38:39
192
原创 Android客户端阿里云MQTT签名鉴权模式的使用
项目需要,要实现Android端消息推送,预研了极光推送、阿里云MQTT,最终选择阿里云MQTT。具体实现步骤如下:1、添加依赖项:在项目根目录下的build.gradle中添加:repositories { maven { url "https://repo.eclipse.org/content/repositories/paho-releases/"...
2019-03-11 19:39:19
1034
原创 Android平板获取设备唯一ID
Android平板获取设备唯一ID的方式有很多,但每种貌似都有其缺点,根据stackoverflow上的评论,最终还是选择ANDROID_ID作为其唯一ID使用,已达到项目需求。stackoverflow连接如下所示:Is there a unique Android device ID?import android.provider.Settings.Secure;privat...
2019-02-25 18:34:36
1976
原创 Android自定义带搜索图标及删除按钮的搜索框SearchEditText
最近项目需求要用到带删除按钮的搜索框,开始设计时搜索图标及提示文字是在左侧的,但是经讨论要求与IOS的UISearchBar风格一致即默认情况下,搜索图标和文字是居中的,在获取焦点时,图标及提示文字左移,输入搜索文字时,删除按钮右端显示,如下图所示:默认情况:获取焦点时:输入文字后:首先直接自定义SearchEditText:@SuppressLint("AppC...
2019-01-22 18:17:41
3178
5
原创 Android自定义Dialog没有按设置的宽度显示的问题
针对自定义Dialog对话框(可以参考之前的博客)没有按设置的宽度显示的问题,可以采用如下方式解决:Window window = dialog.getWindow();WindowManager.LayoutParams lp = window.getAttributes();//将宽度值dp转pxlp.width = context.getResources().getDimens...
2019-01-10 18:51:52
2692
原创 Android自定义WheelView滚轮,并在此基础上自定义日期选择器
项目需求,需要根据UI自定义日期选择器(Android自带的DatePicker极丑)。所以自定义了WheelView,并在此基础上自定义日期选择器。参考1.WheelView TimePicker CityPicker 滚轮(联动)选择器 2.使用第三方WheelView制作日期选择器 3.WheelPicker(推荐参考,功能强大)自定义Whee...
2018-12-19 19:16:15
1361
1
原创 Android自定义SideBar
SideBar类似于手机通讯录或者微信通讯录右侧的A~Z的字母导航。public class SideBar extends View {// public static String[] letter = { "A", "B", "C", "D", "E", "F", "G", "H", "I",//
2018-12-19 18:50:01
863
原创 Android Activity界面切换动画
最近做项目,发现Activity界面切换跳转时,切换动画不一致,有的左进右退,有的右进左退,有的左进左退,有的右进右退,视觉交互效果不是很好,通过查资料,采用以下方法可以解决。主要是通过AppTheme,直接在主题中修改activity动画样式,具体如下:1.定义包含动画的Activity主题<!-- Base application theme. --> <...
2018-12-19 18:29:11
2695
1
原创 Android隐藏状态栏和导航栏
public class BaseActivity extends AppCompatActivity { @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus &&a...
2018-11-16 11:24:28
716
原创 Android解决Mediaplayer+SurfaceView播放视频中的若干BUG
项目的功能很简单,单纯的播放视频,没有进度条,暂停键等,只有一个关闭按钮,当播放视频时切换到后台暂停播放,恢复到前台后接着原来的进度播放。 1.用MediaPlayer播放视频,调用MediaPlayer.start(),surfaceHolder还没初始化好,debug时指示错误的地方在 MediaPlayer.setDisplay(surfa...
2018-11-16 10:49:06
4974
原创 Android之屏幕适配
网上屏幕适配的方式有很多,比如按百分比的、按分辨率的,这里我是按最小宽度去适配,也是Google建议的方式。 1.首先下载屏幕适配插件ScreenMatch。 AS→File→Settings→plugins→SreenMatch下载即可。 2.在项目的任意目录或文件右键选择ScreenMatch,选module,生成一堆dim...
2018-11-07 10:18:09
274
原创 Android之RecyclerView的item点击变色,再次点击取消变色
如题,点击item,item变色,并在item的上显示一个勾,再次点击item,item恢复原来的颜色,并且勾去掉。其实逻辑挺简单的,但当时想了很久,就记录下来了,毕竟小白一个。布局什么的就 不写了,很简单,主要是adapter的部分如下所示,其中List<Boolean> mAudioFileSelectedList初始值均为false。class AudioF...
2018-10-25 19:40:54
6030
原创 Android之Socket文件及消息传输
socket传输文件时,只能通过流去读取消息。当socket接收文件、消息等不同的数据时,如何区别是字符串还是流是很重要的。为了保证接收到的数据类型统一(数据是字符串还是流),需要定义协议。定义协议的方式有很多种:1.发送一个握手信号。 根据握手信号来确定发送的是字符串还是流2.定义了Header(头)和Body(实体),头是固定大小的,用来告诉接收者数据的格式、用途、长度等信息,接收者根...
2018-09-30 11:19:36
3787
1
原创 Android通过MediaStore获取音乐文件信息的方法
Android系统提供了MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套数据库表格,通过Content Provider的方式提供给用户。当手机开机或者有SD卡插拔等事件发生时,系统将会自动扫描SD卡和手机内存上的媒体文件,如audio,video,图片等,将相应的信息放到定义好的数据库表格中。在这个程序中,我们不需要关心如何去扫描手机中的文...
2018-09-15 10:41:03
985
原创 Android onTouchEvent事件传递机制以及关于performClick的Warning
1、OnTouchEvent事件传递机制/2、OnTouchEvent关于performClick的Warning事件由上而下传递返回值的规则如下:为true,则拦截,不继续向下传递,为false,则不拦截,继续向下传递。事件由下而上传递返回值的规则如下:为true,则处理了,不继续向上传递,为false,则不处理,继续向上传递。基于回调的事件处理机制,其核心就是事件的传播顺序,监...
2018-08-11 16:18:28
1176
原创 Android悬浮窗
因项目需求,要在界面显示悬浮摇杆,实现悬浮摇杆的操作如下:1.获取窗口管理WindowMangerWindowManager windowManager=(WindowManager)getApplication().getSystemService(Context.WINDOW_SERVICE);2.获取能够设置窗口的ParamWindowManager.LayoutPara...
2018-08-01 14:40:40
704
1
原创 Android自定义输入框
public class InputCustomDialog extends Dialog { public InputCustomDialog(Context context, int theme) { super(context, theme); } public InputCustomDialog(Context context) { ...
2018-07-03 15:17:09
1176
原创 Android自定义确认提示框
public class ConfirmCustomDialog extends Dialog { public ConfirmCustomDialog(Context context, int theme) { super(context, theme); } public ConfirmCustomDialog(Context context) {...
2018-07-03 15:15:29
777
原创 Android自定义列表选择框
public class ChoiceCustomDialog extends Dialog { public ChoiceCustomDialog(Context context, int theme) { super(context, theme); } public ChoiceCustomDialog(Context context) { ...
2018-07-03 15:12:31
1350
原创 Android通过onTouch点击添加标签,长按删除,按住拖动
网上通过onTouch点击添加标签,按住拖动标签的方法都差不多,而长按删除标签很多都是采用在MotionEvent.ACTION_MOVE中判断是否有长按动作发生,但是这种方法在平板上实际操作的过程中交互性很差(可能个人能力的问题),所以长按删除采用了另外一种方式。 以下两种方式都提供了,供大家参考!public class PictureTagLayout extends ...
2018-07-03 15:04:46
1555
1
原创 Android状态栏、工具栏等背景色的修改
通过Style来修改状态栏、工具栏颜色等。1.设置colorPrimary, colorPrimaryDark两个颜色。<stylename="AppTheme"parent="Theme.AppCompat.Light.NoActionBar"> <itemname="colorPrimary">@android:color/holo_blue_bright&l...
2018-05-03 18:18:16
1577
原创 Android中Fragment和Activity之间相互通信
Fragment和Activity之间通过接口的方式实现通信,主要是分别在onAttachFragment和onAttach方法中进行接口绑定1.Activity向Fragment发出通信Activity端:private OnMainListener mainListener; // 绑定接口 @Override public void onAttachFragment(...
2018-04-29 22:17:39
288
转载 Android应用坐标系全面详解
Android应用坐标系统全面详解 原文链接:优快云@工匠若水,http://blog.youkuaiyun.com/yanbober/article/details/504191171. 背景去年有很多人私信告诉我让说说自定义控件,其实通观网络上的很多博客都在讲各种自定义控件,但是大多数都是授之以鱼,却很少有...
2018-04-21 15:16:38
855
原创 Android中Bitmap与Drawable、byte[ ]之间的转换
一、Drawable转换成Bitmap方法一:Drawable drawable = getResources().getDrawable(R.drawable.ic);BitmapDrawable bd = (BitmapDrawable) drawable;Bitmap bm= bd.getBitmap();方法二:Bitmap bmp = BitmapFactory.decodeReso...
2018-03-20 19:02:38
303
原创 Android让ImageView点击后换成另外一张图片
给ImageView设置点击监听,当点击了,换图片public class Test extends Activity { ImageView iv; boolean isChanged = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCrea...
2018-03-13 18:37:37
26006
11
转载 Android中onTouch与onClick两种监听的完全解析
1、一个简单的测试 在布局中加一个很简单的view,然后给他设置一个OnTouchListener,根据onTouch函数返回值分别测一下结果 (1)全部返回falseView view = findViewById(R.id.id_view_test);view.setOnTouchListener(new View.OnTouchListener() { @Overr...
2018-03-12 19:57:14
245
转载 Android中获取控件宽和高的方法
第一种:直接获取getWidth()和getHeight()我们都知道这两个方法在onCreate()方法中得到的数据都是0;代码:mTextView = (TextView) findViewById(R.id.textview); mWidth = mTextView.getWidth(); mHeight = mTextView.getHeight(); Log.d(...
2018-03-12 19:31:39
652
1
转载 Android监听器实现的四种方式
1. 使用匿名内部类的方式实现监听事件使用方法:首先为要实现监听的对象绑定监听器,例如为一个Button对象绑定一个监听器botton.setOnClickListener();。然后在setOnClickListener()方法中定义一个OnClickListener的匿名内部类,然后重写内部类中的onClick方法。最后在onClick方法中实现监听事件要实现的逻辑即可。优点有:1.可以在当前...
2018-03-12 19:05:42
18680
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人