安卓开发
萌鼠喝酸奶
这个作者很懒,什么都没留下…
展开
-
安卓开发——问题:Collections.synchronizedList()出现ConcurrentModificationException崩溃
在处理线上崩溃时,发现一处list出现了多线程操作导致的崩溃:for(Listener listener : listenerList) {//崩溃处 listener.update();}但排查中,发现这一list已经是使用了Collections.synchronizedList:list = Collections.synchronizedList(new ArrayList<>());后续继续排查发现这是因为Collections.synchronizedL原创 2021-07-22 16:35:32 · 1224 阅读 · 0 评论 -
安卓开发——问题:ScrollView滚动过程中调用scrollTo()无效
最近遇到一个问题,记录一下。业务场景:一个复用的可滑动页面,每次进入页面需要重置定位至顶部,实现方式是在页面退出时执行scrollView.scrollTo(0,0)。问题:快速滚动后,即页面还处于惯性滚动,立即退出页面,再次进入页面,页面位置未重置到顶部。原因:scrollTo()被惯性滚动效果覆盖,不生效。处理:由于ScrollView没有提供可以用来停止滚动的方法,只能通过其他方式尝试解决,最后发现调用smothScrollTo()可以打断惯性滚动,又由于需要ScrollView快速重原创 2021-02-18 17:16:33 · 1797 阅读 · 3 评论 -
安卓开发——GridView反复调用position=0的getView()
发现这个问题的起因是:服务端同事说最近日志平台出现了很多请求图片错误的日志,看ua信息判断是我们Android客户端请求的,是同一张错误图片,且请求频率很高(同一用户1s内请求很多次)。后续排查发现,是GridView捣的鬼。1、首先是我们功能中有一个是GridView实现的,item布局中包含ImageView,会加载服务端提供的图片;2、第1条数据的图片存在问题,请求失败;3、...原创 2020-01-17 14:59:22 · 832 阅读 · 1 评论 -
安卓开发——图片矩阵变换时将坐标原点改为图形中心点
在学图片矩阵变换相关内容时,矩阵的变换(旋转等)总是从左上角(0,0)开始,但一般我们需要的是旋转中心点在图片的中心点,所以要加上:mMatrix.preTranslate(-centerX, -centerY);mMatrix.postTranslate(centerX, centerY);//(centerX,centerY)为图片中心点坐标解析这两行代码:假设图片中心原创 2016-02-05 18:39:38 · 1335 阅读 · 0 评论 -
安卓开发——Camera类
Camera主要实现3D的变形,有转动,旋转等。Camera提供的方法如下:save()//保存当前状态restore()//恢复当前状态translate()//在x,y,z三位控件内进行平移rotateX()//以(0,0)为中心,绕X轴进行选择rotateY()//以(0,0)为中心,绕Y轴进行选择rotateZ()//以(0,0)为中心,绕Z轴进行选择get原创 2016-02-05 18:20:39 · 312 阅读 · 0 评论 -
安卓开发——详解camera.rotate(x,y,z);的旋转方向
我之前的博客有简单介绍camera类的一些简单方法,其中有一个执行旋转操作的方法rotate(x,y,z),关于x,y,z取正负不同值时(x,y,z都是指角度),图像是如何旋转的呢?下面通过实际效果图,大家自行体会:mCamera.rotate(0,0,0);//效果如下mCamera.rotate(40,0,0);//效果如下mCamera.rotate(-4原创 2016-02-05 22:13:03 · 6460 阅读 · 2 评论 -
安卓开发——invalidate()自动清屏和屏幕刷新
invalidate()是用来刷新View的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉。 对于屏幕刷新有以下集中情况可以考虑: 1.不使用多线程和双缓冲 这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在原创 2016-02-05 22:27:04 · 904 阅读 · 0 评论 -
安卓开发——获取Android数字签名证书的SHA1值
今天在百度地图开放平台创建应用的时候,需要数字签名(SHA1),如下:不知其所云,结合百度总结了一下数字签名(SHA1)的获取方法:一、eclipse中查看在eclipse中直接查看:windows —> preferance —> android —> build —>SHA1 fingerprint,如图:二、使用keytool查看打开cmd,输入 cd .原创 2016-02-06 17:10:14 · 844 阅读 · 0 评论 -
安卓开发——如何让控件充满剩余父类容器
一、高度充满父类容器android:layout_width="自定义"android:layout_height="0dp"android:layout_weight="1"二、宽度充满父类容器android:layout_width="0dp"android:layout_height="自定义"android:layout_weight="1"原创 2016-02-08 22:33:20 · 1697 阅读 · 0 评论 -
安卓开发——TextView属性设置
TextView属性详解android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web /email/phone/map/all)android:autoText如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。android:bufferType指定getText()原创 2016-02-09 22:03:46 · 800 阅读 · 0 评论 -
安卓开发——textAppearance的属性设置
textAppearance的属性设置android:textAppearance="@android:attr/textAppearanceSmall" android:textAppearance="@android:attr/textAppearanceMedium"android:textAppearance="@android:attr/textAppearanceLarge原创 2016-02-09 22:01:31 · 1408 阅读 · 0 评论 -
安卓开发——错误提示:Your content must have a ListView whose id attribute is 'android.R.id.list'
该错误原因是我们在继承了ListActivity后,却没有ListView的标签,只要在布局文件中添加定制Layout的代码,即将布局文件中的ListView的id设置为:android:id="@android:id/list"或android:id="@id/android:list",错误即可解决。 android:id="@android:id/list" 或android:id=原创 2016-02-10 15:29:13 · 691 阅读 · 0 评论 -
安卓开发——background与src的区别
ImageView中XML属性src和background的区别:一、background会根据ImageView组件给定的长宽进行拉伸,而src就存放的是原图的大小,不会进行拉伸。二、src是图片内容(前景),bg是背景,可以同时使用。三、scaleType只对src起作用;bg可设置透明度,比如在ImageButton中就可以用android:scaleType控制图片原创 2016-01-30 20:47:37 · 942 阅读 · 0 评论 -
安卓开发——Androidstudio中如何创建shape的XML文件
在drawable中new一个Drawable resource xml,添加名称,点OK,进入文件后将selector改为shape即可,其他xml资源文件创建方法相同。原创 2016-01-30 00:05:44 · 9696 阅读 · 0 评论 -
安卓开发——AndroidStudio中获取联网权限
打开:项目名->manifests->AndroidManifest.xml添加:原创 2016-01-30 00:30:07 · 5024 阅读 · 0 评论 -
安卓开发——AndroidStudio中对于新定义变量提示Private field ‘变量名’ is never used
AndroidStudio中,经常发现定义完一个变量后,会有代码提示说:Private field ‘变量名’ is never used,虽然不会报错,但是它的意思是什么呢?其实这句话的意思是 定义的变量从未被请求使用过,也就是说你只声明或者赋值但是从来没有真正使用过该私有成员变量。该提示仅对private修饰符有效,想想原因也很简单,因为private仅对本类以及内部类有效,都在同一个原创 2016-01-30 16:09:53 · 16018 阅读 · 0 评论 -
安卓开发——android window 一些属性说明
@null :Dialog的windowFrame框为无true:是否浮现在activity之上false:是否半透明true:是否显示title@drawable/dia_bg:设置dialog的背景false: 是否允许背景变暗原创 2016-01-30 16:45:25 · 445 阅读 · 0 评论 -
安卓开发——final的用法
final如果修饰类,该类不能被继承;final如果修饰变量,该变量不能被修改,不能再重新赋值,即变为常量;final如果修饰方法,该方法不能被重写;此外,只有被final修饰的局部变量可以用在内联方法里。比如onClick里面如果调用button.setText(...),就必须将button设置为final,即: public class MyActivity extends原创 2016-02-10 17:26:17 · 6469 阅读 · 0 评论 -
安卓开发——TextView属性
android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)android:autoText 如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输入的时候起作用。android:bufferType 指定getText()方式取得的文本类别。选项edit原创 2016-03-01 16:13:20 · 495 阅读 · 0 评论 -
安卓开发——MotionEvent中getAction、getActionMask、getActionIndex区别
Android用一个32位的整型值表示一次TouchEvent事件,低8位表示touch事件的具体动作,比如按下,抬起,滑动,还有多点触控时的按下,抬起,这个和单点是区分开的,下面看具体的方法: 1 getAction:触摸动作的原始32位信息,包括事件的动作,触控点信息 2 getActionMasked:触摸的动作,按下,抬起,滑动,多点按下,多点抬起 3 getActionI原创 2016-02-13 17:28:56 · 13362 阅读 · 1 评论 -
安卓开发——指定Button的样式
自定义样式方法,可以直接通过定义xml文件来实现不同的样式:只需要修改button_style文件,三种状态分开定义:Xml代码 : <gradient android:startColor="#0d76e1" android:endColor="#0d76e1" android:angle="270" /> <padding android:left="10原创 2016-02-13 20:09:59 · 544 阅读 · 0 评论 -
安卓开发——问题:PNG图片的透明部分不显示Layout的背景色
在ImageButton控件中,引入的PNG图片的透明部分不显示Layout的背景色,而是显示灰色。原因是引用图片时使用了src属性,换成background属性即可。原创 2016-02-14 17:16:49 · 1731 阅读 · 0 评论 -
安卓开发——布局:layout_gravity与gravity两种属性的区别
在进行UI布局的时候,可能经常会用到 android:gravity 和 android:layout_Gravity 这两个属性。他们的区别在于:android:gravity 属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置.android:layout_gravit原创 2016-02-14 17:29:01 · 678 阅读 · 0 评论 -
安卓开发——自定义ViewGroup
1. onMeasure决定内部View(子View)的宽和高,以及自身的宽和高2. onLayout决定子View的放置的位置3. onTouchEvent定义触碰事件原创 2016-02-02 15:45:53 · 304 阅读 · 0 评论 -
安卓开发——DisplayMetrics类
Android.util 包下的 DisplayMetrics 类提供了一种关于显示的通用信息,包括显示大小、分辨率和字体。为了获取DisplayMetrics 的成员,首先初始化一个对象如下:DisplayMetrics metrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(m原创 2016-02-02 22:37:21 · 348 阅读 · 0 评论 -
安卓开发——TypedValue.applyDimension()
android内部会使用TypedValue.applyDimension()函数将所有单位(sp/dp/dip等)换算成标准尺寸px,转换方法为:int textSize = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, context.getResources().getDisplayMetrics());原创 2016-02-02 23:14:59 · 446 阅读 · 0 评论 -
安卓开发——requestFeature() must be called before adding content
今天在学习安卓开发时,为了实现取消ActionBar,便在onCreate()里加了句requestWindowFeature(Window.FEATURE_NO_TITLE);如图巴特,载到手机上时,却异常退出。logcat一直报错真是百思不得其解,我明明就是before,并没有after呀。后来百度得知是由于我用的是Google最新的开发工具,继承的是Actio原创 2016-02-03 01:02:33 · 388 阅读 · 0 评论 -
安卓开发——AndroidStudio生成getter,setter,tostring,constructor等函数的方式
刚使用Androidstudio,很多东西都不知道,结合百度总结的:方式一:code-->Generate方式二:快捷键Alt + Insert在弹出的对话框中自行选择。原创 2016-02-03 16:54:35 · 1433 阅读 · 0 评论 -
安卓开发——res与res-auto的区别
res和res-auto的区别今天学习在布局文件中使用自定义属性的时候,按照视频所说的添加了语句:xmlns:example="http://schemas.android.com/apk/res/包名"不过编译器提示警告,ctrl + f1看了提示:解决方法就是改成:xmlns:example="http://schemas.android.com/apk/res-aut原创 2016-02-03 15:49:39 · 2616 阅读 · 0 评论 -
安卓开发——Math类角度部分
Math类与画图相关的方法:Math.atan(double d);//反三角tan函数,求得弧度Math.toDegrees();//弧度转化为角度Math.toRadians();//角度转化为弧度原创 2016-02-04 21:22:33 · 678 阅读 · 0 评论 -
安卓开发——屏幕坐标相关
屏幕左上角是坐标系统原点(0,0);坐标原点向右延伸是X轴正方向,原点向下延伸是Y轴正方向,即屏幕右下角坐标为(getWidth(),getHeight())。原创 2016-02-04 21:32:52 · 317 阅读 · 0 评论 -
安卓开发——Canvas类
Paint类常用方法:setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色,参数一为alpha透明值setAlpha(int a) // 设置alpha不透明度,范围为0~255setAntiAlias(boolean aa) // 是否抗锯齿setColor(int color) // 设置颜色,这里Android内部定义的有Co原创 2016-02-03 23:57:24 · 457 阅读 · 0 评论 -
安卓开发——9patch图的使用
9patch图片就是xxx.9.png图片,也是png的一种格式。在android当中有可能会用到无损拉伸图片,最简单的方法就是9patch。android自带有转换工具,路径是在tools下的draw9patch.bat。使用方法就载入需要拉伸的图片,在需要拉伸的边点上黑点(点击鼠标左键)。注意:黑点的边不能断,并且左边和上边都必须是黑线,否则导入到工程中会报错原创 2016-01-30 21:19:33 · 416 阅读 · 0 评论 -
安卓开发——Paint、Canvas、Matrix简单类比
Paint:画笔Canvas:画布Matrix:变换矩阵绘制动效确实就像拿着笔在画布上面画画一样,而Paint就是我们拿着的笔,Canvas就是使用的画布。原创 2016-02-04 22:37:58 · 395 阅读 · 0 评论 -
安卓开发——Paint类
用一个词简单描述Paint,就是画笔。根据我们要画的类型,我们可以选择不同的笔,比如大气磅礴的山水画,我们可以选择大头的毛笔;细腻入微的肖像画我们可以选择尖头的铅笔。并且根据我们想要的效果,我们在绘画的时候,还会选择不同的颜料或不同颜色的笔Paint类的三个构造函数:Paint() //创建一个画笔对象Paint(int flags) //在构造的时候可以传入一些定义好的属性,例:Pa原创 2016-02-04 22:55:45 · 490 阅读 · 0 评论 -
安卓开发——Path类
简单使用方法://定义Path mPath = new Path();mPath.moveTo(mCenterX, 550);//起点mPath.lineTo(mCenterX - 30, mCenterY);//第二个点mPath.lineTo(mCenterX, 2 * mCenterY - 550);//第三个点mPath.lineTo(mCenterX + 30, mCente原创 2016-02-05 00:46:07 · 272 阅读 · 0 评论 -
安卓开发——在Activity里如何获得另一个xml布局文件的控件
有时候,我们需要在一个Activity中调用另一个xml布局文件,即非本Activity所绑定的xml布局文件中的控件,这时候就不能直接findViewById,不然会报错指向空对象,这时就需要像下面这样做。LayoutInflater factory = LayoutInflater.from(当前类.this); View layout = factory.inflate(R.layo原创 2016-03-04 18:26:53 · 22300 阅读 · 24 评论 -
安卓开发——运行错误:Unable to find explicit activity class
在运行调试时,出现闪退,logcat报错:Unable to find explicit activity class错误原因是:AndroidMainfest.xml中没有声明新添加的Activity。解决办法,在AndroidMainfest.xml中的application标签内部添加:ps:经常忘记添加,233。原创 2016-03-30 16:14:22 · 2162 阅读 · 0 评论 -
安卓开发——onActivityResult中requestcode与resultcode区别
运用startActivityForResult(Intent intent,int RequestCode)用于启动另一个activity并等待其返回的结果,毋庸置疑,intent用于启动目标activity,而RequestCode的作用是什么呢?由于每个activity都可以启动任意的子activity并等待结果,而结果处理函数只有一个onActivityResult(int req原创 2016-03-18 15:29:17 · 4599 阅读 · 0 评论 -
安卓开发——androidstudio自动导包(导入全部包)
1、Android studio 只有import单个包的快捷键:Alt+Enter。没有Eclipse下的快速导入包的快捷键Ctrl+Shift+O。2、不过Android studio设置里有一项Auto Import自动导入功能。设置过程如下: Android studio --> File--> Settings --> Editor --> Auto Imp原创 2016-04-01 17:21:12 · 4314 阅读 · 0 评论