Linux内核
1、Display Driver:显示驱动
2、Camera Driver:相机驱动
3、Bluetooth Driver:蓝牙驱动
4、Flash Memory Driver:闪存驱动
5、Binder IPC Driver:进程监督器驱动
6、Power Management:电池
类库层
Surface Manager:显示管理
Media Framework:多媒体框架
SQLite:移动端轻量级数据库
OpenGL|ES:3D图库引擎
Free Type:字体显示
WebKit:浏览器内核
SGL:2D图库引擎
SSL:安全通信
libc:c语言核心库
JNI:(Java Native Interface)是一种编程桥梁,它允许Java代码与本地代码(如C、C++等)进行交互。在Android平台上,JNI被广泛用于将本地代码集成到Java应用程序中,以便实现更高效的应用程序。
应用框架层:java语言
1、Activity Manager: 每个界面对应一个activity
2、window Manager:窗口
3、Content Providers:内容
4、View System:视图
5、Notification Manager:通知
6、Package Manager:apk包 aab包
7、Telephony Manager:电话
8、Resource Manager:
9、Location Manager:
10、XMPP Service:即时通讯
Home:系统首页
Contacts:联系人
Phone:电话
Browser:浏览器
。。。。。。
1、首要差别
Dalvik:基于寄存器,编译和运行都会快一些
JVM:基于栈(内存),编译和运行都会慢一些
2、字节码区别
Dalvik:执行.dex格式的字节码,是对.class文件进行压缩后产生的,文件变小。
JVM:执行.class格式的字节码
3、运行环境:
Dalvik:一个应用启动都运行一个单独的虚拟机运行在一个单独的进程
JVM:就一个虚拟机,所有应用都在JVM中。
/data/app/:存放着第三方的APK目录,可以卸载的那种。
/system/app/:其中是系统中的应用安装文件
/data/data/packagename/:应用安装时,自动生成。卸载时,自动删除
/storage/sdcard/:sd卡的文件夹
SDK全称为 Software Development Kit,它可将 App 源码编译为可执行的 App 应用。
是通过adb【android-debug-brigde】来进行连接的。
proguard-rules.pro:该文件用于描述java代码的混淆规则。
gradle.properties:该文件用于配置编译工程命令行参数,一般无需改动。
setting.gradle:该文件配置了需要编译哪些模块。初始内容为include:'app',表示只编译app模块。
local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。
<LinearLayout
android:gravity="center">
<!-- gravity让子组件 垂直和水平居中 -->
</LinearLayout>
1、创建布局问题
2、创建activity的类,继承AppCompatActivity
3、在清单文件中进行注册
<activity android:name=".launch.SplashActivity"/>
还可以直接使用android studio来创建,所有的都配齐了。
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent = new Intent();
intent.setClass(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
});
1、textview 如果多次使用的话,那么定义在strings.xml中比较好。
tv_hello.setText(R.string.hello);
2、根据手机分辨率,从dp单位,转换成px单位
public static int dip2px(Context text,float dpValue){
//获取当前手机的像素密度 1dp对应几个px
float scale = context.getResources().getDisplayMetrics().density;
//利用int只保留整数的特点,实现四舍五入取整
return (int)(dpValue * scale + 0.5f);
}
layout_gravity:指定了当前视图相对于上级视图的对齐方式。
gravity:指定了下级视图相对于当前视图的对齐方式。
layout_weight:权重;
layout_height="0dp"
layout_weight="1"
网格布局支持多行多列的表格排列。
columnCount:指定了网格的列数,即每行能放多少个视图
rowCount:指定了网格的行数,即每列能放多少个视图
text的英文字母,展示是强制大写的,文本是默认居中的。
textAllCaps:它指定了是否将英文字母转为大写,为True时,表示自动转大写,为false表示不做大写转换。android:textAllCaps="false",该属性默认为true
public void doClick(View view) {
String str = String.format("%s 您点击了按钮:%s", DateUtil.getNowTime(), ((Button) view).getText());
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
setOnClickListener
setOnLongClickListener,按钮被按住超过500毫秒时,触发该事件。
android:src="@drawable/abc_vector_test"
imageView.setImageResource(R.drawable.ic_launcher_background);
缩放:scaleType
imageView.setScaleType(ImageView.ScaleType.CENTER);
继承了ImageView,可以放置返回的那种箭头,计算器上的根号等图形,来进行点击操作。
<button
android:text="图标在左"
android:drawableLeft="@drawable/ic_xxxxx"