您的位置:首页 > 移动开发 > Android开发

Android 开发小技巧整理(持续更新)

2016-08-22 17:25 417 查看
    写此篇博客主要是给自己一些开发过程中的技巧总结

1、Api 过时问题(开发中这种问题是经常碰到的,一般偷懒,还是继续沿用,但是要成为一个优秀的开发者就该改用最新的api,即使因为改用最新的api而导致出现的问题,那也是开发者应该解决的不是?)

android:singleLine="true"  过时


替代方案:

JAVA代码单行显示

TextView mTextView = (TextView) findViewById(R.id.listView_tip);
mTextView.setSingleLine();


XML直接单行显示

<TextView
android:id="@ id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"/>

上面的android:lines="1"就是设置TextView为单行显示的代码、这个属性是没有过时的  

2、安卓ADB端口被占用/ADB无法使用解决办法


在打开android ADB要进行程序调试时,在终端命令行会出现找不到设备,那么很有可能端口被占用了,其实百度经验已经有解决方法,我就直接复制过来了

1、CMD命令窗口输入:adb nodaemon server 。然后就会提示你哪个端口被占用了。

2、输入netstat -ano | findstr "5037" 。然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字

3、打开任务管理器,点击“进程“,“查看”-“选择列”,勾选PID

4、查找第2步中看到的数字PID,然后结束相关进程,即可

如果上述不行,那么端口就是被一些流氓程序霸占,例如360,进程杀都杀不死,如果是360导致的问题,那么可以通过此网站上的攻略进行解决 点击打开链接

不过一些媒体软件,例如QQ音乐,酷狗也会占用该端口,也可以通过上述说的链接进行解决

3、Android Canvas drawText方法中的坐标参数详解以及实现中文垂直居中

就是

canvas.drawText("www.jcodecraeer.com", x, y, paint);  x和y参数是指定字符串中心的坐标吗?还是左上角的坐标?这个问题的直观印象应该是左上角的坐标,但是安卓的处理有点另类,我都怀疑安卓的设计者是不是脑壳有问题了。

x默认是‘www.jcodecraeer.com’这个字符串的左边在屏幕的位置,如果设置了paint.setTextAlign(Paint.Align.CENTER);那就是字符的中心,y是指定这个字符baseline在屏幕上的位置。

API的解释:

public void drawText (String text, float x, float y, Paint paint)

Since: API Level 1 Draw the text, with origin at (x,y), using the specified paint.
The origin is interpreted based on the Align setting in the paint.

起始点的具体位置决定于paint的align设置。

Parameters

text The text to be drawn

x The x-coordinate of the origin of the text being drawn 

y The y-coordinate of the origin of the text being drawn 

paint The paint used for the text (e.g. color, size, style) 

Canvas 作为绘制文本时,使用FontMetrics对象,计算位置的坐标。 它的思路和java.awt.FontMetrics的基本相同。 

FontMetrics对象它以四个基本坐标为基准,分别为:

FontMetrics.top

FontMetrics.ascent

FontMetrics.descent

FontMetrics.bottom



实现文本垂直居中,可以查看点击打开链接

Android Studio中commit时的用户名修改

打开Git所在文件中的git.cmd.exe输入以下命令可更改用户名和邮箱:
 git config --global user.name "lihao"

android 模拟内存紧张 adb 命令  adb shell am kill 包名 详情:http://blog.csdn.net/weizongwei5/article/details/50515719

屏幕区域尺寸获取 例如状态栏高度,应用区域,view绘制区域 详情:http://blog.csdn.net/sun_star1chen/article/details/11695715#

相对布局 子view的touch事件:

当两个子view重叠了,上面的子view如果没有设置touch或onclick事件,那么其事件可以传递到下面的那个view

(原理我们都知道,所有touch事件都是先传给父布局的,在此情况下,上面那个view没有touch事件处理,父布局将事件传递给下面那个view,

这样说不知道有没有问题),当然上面那些view 不能是button或者imagebutton 这种自带onclick事件的,或者重写该button类型控件

android studio 在导入新项目时 一直在Building gradle project 由于在下载相应的gradle_wrapper

详情:http://www.jianshu.com/p/e1c0b46e317c

输入框浮动在软键盘之上: 父布局一定得是相对布局,且位于底部 软键盘方式

WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE


Android 沉浸式状态栏 默认xml 主题配置

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/blue</item>
<item name="colorPrimaryDark">@color/status_blue</item>


</style>


Execution failed for task ‘:app:compileDebugAidl’: aidl is missing”解决办法

出现情景:Android stdio项目中用到了aidl,然后修改项目的包名,因为aidl的包名和项目包名一样,所以直接修改包名的时候,会提示aidl的包名有问题,不能直接修改,如果这时你直接修改aidl所生产的java文件里的代码,那么当你再次clean项目,就会出现这个错误了

解决方式:把项目中已经跟随aidl生产的Java文件删除(在build的gen目录下的debug目录下),直接删除,然后再clean,即可成功(更改包名的时候 注意package名字)

打包方式:千万别用as自带的按钮去打 日志都看不到 通过控制台明天打 能看到错误日志 gradlew assembleRelease 详情:https://www.cnblogs.com/strinkbug/p/6858804.html

反编译 calss.dex文件查看 http://blog.csdn.net/z2278734400/article/details/72770559
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: