Android开发中的一些小知识点记录(41-60)
来源:互联网 发布:ubuntu ibus 系统设置 编辑:程序博客网 时间:2024/06/07 03:35
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/73076519
Android开发中的一些小知识点记录(1-20) (21-40)
41,android:layout_gravity 与 android:gravity 的区别
- android:layout_gravity 表示的是当前的View或者ViewGroup在 ViewGroup当中的位置(子控件在父控件中的位置)
- android:gravity 表示的是当前的 View 或者 ViewGroup的内容所在的位置(控件的内容在控件中的位置)
42,margin和padding的区别
- margin表示外边距
- padding表示内边距
如图:未设边距时,三个边框线是重合的,设置边框线后,margin是外边距,向外扩;padding是内边距,向内扩
43,Android TV开发中获取控件焦点
在每个控件的布局中设置:
android:focusable="true"
这样就可以通过遥控器或按键获取到该控件焦点,然后在控件的状态选择器中设置:
<item android:drawable="@drawable/bg_yellow" android:state_focused="true"/><item android:drawable="@drawable/bg_normal"/>
如果不想在状态选择器中设置,也可以在代码中设置:
public class MainActivity extends AppCompatActivity implements View.OnFocusChangeListener { private static final String TAG = "MainActivity"; private Button mButton; private EditText mEdittext; private LinearLayout mLinearLayout; private CheckBox mCheckBox; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } public void initView() { mButton = (Button) findViewById(R.id.button); mEdittext = (EditText) findViewById(R.id.edittext); mLinearLayout = (LinearLayout) findViewById(R.id.linearlayout); mCheckBox = (CheckBox) findViewById(R.id.checkbox); } public void initData(){ mButton.setOnFocusChangeListener(this); mEdittext.setOnFocusChangeListener(this); mLinearLayout.setOnFocusChangeListener(this); mCheckBox.setOnFocusChangeListener(this); } @Override public void onFocusChange(View view, boolean b) { if(b & view == mEdittext){ view.setBackgroundResource(R.drawable.bg_yellow); }else if(b & view == mButton){ view.setBackgroundResource(R.drawable.bg_red); }else if(b & view == mLinearLayout){ view.setBackgroundResource(R.drawable.bg_green); }else { view.setBackgroundResource(R.drawable.bg_normal); } }}
44,自定义可更改颜色大小等属性的CheckBox
- 设置CheckBox的button为你自定义的selector
<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:button="@drawable/checkbox_selector"/>
- 准备checkbox_focus、checkbox_checked、checkbox_normal这三张图片,大小颜色等属性均由图片确定
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:drawable="@drawable/checkbox_focus"/> <item android:state_checked="true" android:drawable="@drawable/checkbox_checked"/> <item android:drawable="@drawable/checkbox_normal"/></selector>
45,新建assets目录的位置
在src—>main目录下面,和java、res目录平级,光忘记,记录一下!
46,红橙黄绿青蓝紫的 RGB十六进制表示法
红 #FF0000
橙 #FF8000
黄 #FFFF00
绿 #00FF00
青 #00FFFF
蓝 #0000FF
紫 #8000FF
47,保证Apk的唯一性
包名唯一和应用程序签名的唯一
48,什么是时间戳
时间戳:表示的是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
时间戳转化为年月日时分秒形式代码:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import java.text.SimpleDateFormat;import java.util.Date;public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 时间戳 表示的是格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数 // 一般以long格式表示 long timestamp = 1514994617; String time = formatData("yyyy:MM:dd HH:mm:ss", timestamp); // time:2018:01:03 23:50:17 Log.i(TAG , "time:" + time); } /** * 将时间戳格式化年月日时分秒形式 */ public static String formatData(String dataFormat, long timeStamp) { if (timeStamp == 0) { return ""; } timeStamp = timeStamp * 1000; String result = ""; SimpleDateFormat format = new SimpleDateFormat(dataFormat); result = format.format(new Date(timeStamp)); return result; }}
49,用流读取本地assets文件
InputStream is = getAssets().open("friends.txt");String json = readTextFile(is);Log.i(TAG, "json:" + json );Gson gson = new Gson();// [] 集合类型 {} 对象类型 集合类型要加List 对象类型直接.class就可以了List<Friends> friend = gson.fromJson(json , new TypeToken<List<Friends>>(){}.getType());Log.i(TAG, "friend:" + friend );private String readTextFile(InputStream is) { String readStr = ""; BufferedReader br; try { br = new BufferedReader(new InputStreamReader(is, "UTF-8")); String tmp; while ((tmp = br.readLine()) != null) { readStr += tmp; } br.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } return readStr;}
50,shape.xml 属性使用
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!--固体填充--> <solid android:color="@color/colorAccent"/> <!--圆角--> <corners android:radius="20dp"/> <!--描边 线宽2dp 虚线 长度9dp 实线 长度9dp--> <stroke android:color="@color/colorPrimaryDark" android:width="2dp" android:dashGap="9dp" android:dashWidth="9dp"/> <!--渐变色 可以指定左中右渐变 可以调整角度 逆时针旋转角度 必须是45的倍数--> <gradient android:startColor="#FFF" android:centerColor="@color/colorPrimary" android:endColor="#000" android:angle="45"/></shape>
51,通过两个点的经纬度计算距离
private const double EARTH_RADIUS = 6378.137; private static double rad(double d){ return d * Math.PI / 180.0; } public static double GetDistance(double lat1, double lng1, double lat2, double lng2){ double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a/2),2) + Math.Cos(radLat1)*Math.Cos(radLat2)*Math.Pow(Math.Sin(b/2),2))); s = s * EARTH_RADIUS; s = Math.Round(s * 10000) / 10000; return s; }
52,跟进源码的方法
有时候我们重写了系统方法,并且想查看一下系统方法的关键源码,可以通过在方法中添加堆叠追踪的方法实现。在方法中添加如下代码,你想跟进的系统源码就可以在控制台中打印出来。建议打印出来的最下面的信息就没有必要跟进了,从中间往上面跟进
new Throwable().printStackTrace();
53,通过Release版的签名证书打一个Release包
选中Project点F4出现如下界面:
填写Signing(比如命名为release),Build Types里面的debug和release的Signing Config都改为Signing中添加的那个名字(release)
在控制台Terminal位置输入gradlew assembleRelease,回车等几分钟,就可以在build—->outputs中找到刚打的Release包
54,compileSdkVersion, minSdkVersion 和 targetSdkVersion三者之间的区别
compileSdkVersion 用于告诉Gradle 用哪个 Android SDK 版本编译你的应用,建议设置最新的 SDK 版本进行编译
minSdkVersion 用于设置应用可以正常运行的最低Android SDK 版本
targetSdkVersion 用于设置你想使用新特性的Android SDK 版本,一般也是设置为最新的 SDK 版本,但设置之前需要进行详细的测试
一般来说,三者之间的关系如下:minSdkVersion <= targetSdkVersion <= compileSdkVersion
55,android TV开发如何连接adb
用 USB to USB 数据线连接,并需要通过软件或硬件的方式进行打开
软件方式打开:在系统中找USB连接到PC的选项,勾选打开
硬件方式打开:在主板上找到一个针脚的帽子,将帽子拔掉通过adb connect IP地址:端口号,这样的方式打开
56,android中将自己的应用程序设置为launcher
<activity android:name=".activity.SplashActivity" android:theme="@style/AppSplashTheme"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> // 如果将应用程序设置为launcher,点击home键启动自己的应用 <category android:name="android.intent.category.HOME" /> // 如果接收隐式意图的话需设置category.DEFAULT,不然将导致 Intent 匹配失败 <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>
Android开发中的一些小知识点记录(1-20) (21-40)
——-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!——-
- Android开发中的一些小知识点记录(41-60)
- Android开发中的一些小知识点记录(1-20)
- Android开发中的一些小知识点记录(21-40)
- android开发一些小知识点记录
- Android中的一些小知识点
- Android开发中的一些小的知识点总结
- [长期记录]开发中的小知识点
- Android 自己开发中的一些小问题记录
- 记录平时Android开发中的一些小技巧
- android 开发中遇到的一些小的知识点在此做一个记录(持续更新)
- android小知识点记录
- Android 小知识点记录
- android 小知识点记录
- 记录开发过程中的一些小问题
- 记录一些Tensorflow小知识点
- Android开发过程中的几个小知识点
- Android开发中的一些java知识点
- 【积累贴】cocos2d开发中的一些小知识点
- Processing Images(处理图像)
- 量子计算机的现状和趋势
- 生活杂感
- thinkPHP cache类
- 观察者模式
- Android开发中的一些小知识点记录(41-60)
- CTF-PWN之fsp-utilize漏洞利用
- Android—高级控件(二)ListView 优化版
- TensorFlow in Go
- 在AndroidStudio中使用gradle构建出现的一些问题
- git学习笔记
- 浅析Java中的Parcelable和Serializable
- 破解**jetbrains**的**Webstorm、Pycharm、Phpstorm、RubyMine**
- Python自然语言分析(第四期):第3课书面作业