Android简介

Android智能操作系统,主要手机,其他还有TV,穿戴设备,汽车等。

Android架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XdsLEVp-1665745053825)(C:\Users\Administrator\Documents\Tencent Files\1634866331\FileRecv\Android系统架构.png)]

APP:包含系统应用,第三方应用。使用java语言开发。

Framework:API,提供给APP层开发的各种接口,学习底层的原理和流程。使用java语言开发

LIbraries和ART:开源库,JNI的调用。C/C++实现的

​ **ART:**Android RunTime,dalvik—dvm

​ java源程序—class文件—dex文件—apk;

​ 一个应用程序,一个进程,运行在一个独立的dvm实例中

HAL:硬件抽象层(硬件的驱动),保护硬件厂家的驱动程序不被破坏,不开源。分开软件层和硬件层进行测试

Linux内核:Android基于Linux系统的,并进行优化的。用C来实现的

APP

1、Android Studio软件

2、jre

3、adk(提供Android api)后期通过SDK马纳戈尔来下载其他版本

​ platforms应用支持的Android版本

​ Platform-tools平台工具,包含adb.exe,fastbool.exe

​ build-tools编译工具

​ extra:Platforms以外的功能,尤其用于存储兼容低版本的包

4、模拟器:

​ HAXM not install 原因:1没有安装HAXM installer 2、系统不支持虚拟化 可以使用第三方模拟器:逍遥模拟器,雷电模拟器,夜神模拟器

<!--xmlns:命名空间,余数这个xm中可以使用的标签有哪些
-->

界面

通过 xml方式

<!--
颜色值:1、英文单词2、rgb 十六进制数 #ff0000红色  #ffffff白色#000000黑色
--><TextViewandroid:layout_width="wrap_content"android:layout_height="match_parent"android:text="你好啊"android:textColor="#000000"android:textSize="40dp"/>

通过代码java

public class Second extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);LinearLayout layout =new LinearLayout(this);LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);layout.setLayoutParams(params);layout.setBackgroundColor(Color.GREEN);for (int i = 0; i < 5; i++) {TextView tv=new TextView(this);tv.setText("海峰智云"+i);tv.setTextColor(Color.rgb(255,0,0));tv.setTextSize(20);}setContentView(layout);}}
//onCreate界面创建时要执行的代码
//1、初始化组件
//2、绑定数据
//3、绑定事件

java+xml方式

固定不变的写在xml里面

可变化的写在java里面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ThredActivity"android:id="@+id/parentLayout"android:orientation="horizontal"></LinearLayout>
<!--
<androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>重叠<LinearLayout>
</LinearLayout>链式结构,
-->
public class ThredActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_third);LinearLayout parentLayout=findViewById(R.id.parentLayout);for (int i = 0; i < 5; i++) {TextView tv=new TextView(this);tv.setText("你好");tv.setTextColor(Color.BLACK);parentLayout.addView(tv);}}

文本视图

<!--
android:orientation="horizontal"水平的="vertical"竖直的
文本视图layout_width,layout_height值match_parent填充满父控件fill_parent 填充满父控件  已过时,不建议使用wrap_content根据内容来填充自定义值:100px:像素dp:设备独立像素 density.1dp就是160densityDpi上的1px120dpi---0.75px160dpi---1px240dpi---1.5px320dpi---2pxjava 代码中使用的默认尺寸单位是pxtextColor颜色值1、存在的颜色值@android:color/holo_blue_dark2、写出十六进制的方式表示rgb #rrggbb  #rgb#000--黑色 #fff--白色    #50aa0000-透明3、
-->
//日志级别:verbose(任何信息都会输出) debug  info warn error
Log.d("类名","String");

对齐方式

<!--android:gravity 内容对齐方式left right top bottom centerandroid:layout_gravity 该控件本身在父控件中的对齐方式水平的LinearLayout,可以竖直居中竖直的LinearLayout,可以水平居中

内边距

<!--android:padding 控制和内容的间距paddingrRight paddingLeft paddingToppaddingBottom

外边距

<!--android:layout_margin 外边距:该控件距父控件的间距

字体大小

<!--textSize  sp

显示

<!--
visibility  gone:不显示,不占空间invisible:不可见,占空间visible:可见
-->

可编辑的文本框

<EditTextandroid:id="@+id/contentEdt"android:layout_width=""android:layout_height=""android:hint=""android:inputType=""/><!--hint 提示文字,当text不为空的时候隐藏inputType校验输入数据的类型 number text phone date datetime textpassword-->

按钮

 <Buttonandroid:id="@+id/registerBtn"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="登录"/>

图片展示

<ImageView宽高android:src="图片源@drawable"android:scaleType=""><!-- scaleType 缩放类型fitXY:缩放X和Y以适应控件的大小,可能会拉伸,失真ditStart 原比例缩放图片填充控件的左上部分,右下可能留白fiEnd 原比例缩放图片填充控件的右下部分fitCenter 原比例缩放图片填充控件的中间center 图片不缩放,取图片的中间显示到控件中,不拉伸,不失真,可能会裁剪centerCrop 缩放图片至填充满控件,超出的部分裁减掉centerInside 保持纵横比例缩小图片,以显示完整的图片matrix 矩阵 触摸事件缩放的时候--><!--android:adjustViewBounds true 允许调整ImageView大小以适应所显示的图片-->

点9图主要用在背景上

文本监听

//editText
EditText contentEdt=findViewById(R.id.contentEdt)
//addTextChangedListener 文本变化监听器
//限制文本框输入长度6contentEdt.addTextChangedListener(new TextWatcher() {//接口实现@Overridepublic void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}@Overridepublic void afterTextChanged(Editable editable) {}});

按钮

 Button registerBtn=findViewById(R.id.registerBtn);registerBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(MuiActivity2.this,"别点了",Toast.LENGTH_LONG).show();}});

单选按钮

<RadioGroupandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="男"android:checked="true"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="女"android:checked="false"/><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="妖"android:checked="false"/></RadioGroup>

java


多选按钮

<!--CheckBox  多选按钮--><CheckBoxandroid:id="@+id/baskball"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="篮球"android:checked="true"/><CheckBoxandroid:id="@+id/football"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="足球"android:checked="true"/>

图标自定义

<!--android:buttonandroid:drawableLeft自定义图标android:background
-->

图片

 ImageView img=new findViewById(R.id.img);img.setImageResource(R.drawable.test)//设置srcimg,setImageDrawable(getDrawable(R.drawable.text2));
Drawable drawable=new ColorDrawable(Color.GREEN);

下拉框

<Spinnerandroid:prompt="@string/"提示标题anroid:layout_width=""android:layout_hight=""android:spinnerMode="dialog"对话框的形式"dropdown"下拉框的形式android:entries="@array/数组名称"/>
//position 选中项的索引
setSelsction()//设置默认选项String[] rade=getResources().getStringArray(R.array.arage)getSelectedItem()//获得字符串getSelectedItemPositon()//获得索引

列表视图

 <ListViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:entries="@array/grade"android:divider="#00aa00"android:dividerHeight="2dp"android:headerDividersEnabled="true"android:footerDividersEnabled="true"android:listSelector=""/>
<!--entries="@array/grade"通过数组资源指定列表项divider="#00aa00"分割线可颜色可图片dividerHeight="2dp"分割线高度headerDividersEnabled="true"顶部分割线footerDividersEnabled="true"底部分割线listSelector=""指定点击色
-->

java实现

 ListView lv=findViewById(R.id.vivilist);//通过适配器String[] fru={"水蜜桃","西瓜","葡萄","樱桃"};ArrayAdapter<String> adapt =new ArrayAdapter<>(this,android.R.layout.simple_list_item_multiple_choice,fru);lv.setAdapter(adapt);

自定义适配器

<ImageViewandroid:id="@+id/imago"android:layout_width="45dp"android:layout_height="45dp"android:layout_margin="10dp"android:scaleType="fitCenter"/><TextViewandroid:id="@+id/textTV"android:layout_width="match_parent"android:layout_height="match_parent"android:textSize="20sp"android:gravity="center_vertical"/>
//自定义一个水果
public class Fruit {private int img;private String name;public Fruit(int img,String name) {this.img = img;this.name=name;}public int getImg() {return img;}public void setImg(int img) {this.img = img;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}//自定义adapt
public class FruitAdapter extends BaseAdapter {private Context context;private List<Fruit> fruitlist;public FruitAdapter(Context context,List<Fruit> fruitList){this.context=context;this.fruitlist=fruitList;}@Overridepublic int getCount() {return fruitlist==null?0: fruitlist.size();}@Overridepublic Object getItem(int position) {return fruitlist.get(position);}@Overridepublic long getItemId(int position) {return position;}//获取视图@Overridepublic View getView(int position, View convertView, ViewGroup viewGroup) {//convertView当初列表项的视图convertView= LayoutInflater.from(context).inflate(R.layout.listview_item,null);ImageView im=convertView.findViewById(R.id.imago);TextView tv=convertView.findViewById(R.id.textTV);Fruit fr=fruitlist.get(position);im.setImageResource(fr.getImg());tv.setText(fr.getName());return convertView;}
}//最后的实现
List<Fruit> frulist=new ArrayList<>();frulist.add(new Fruit(R.drawable.cao,"草莓"));frulist.add(new Fruit(R.drawable.lizhi,"荔枝"));frulist.add(new Fruit(R.drawable.ying,"樱桃"));FruitAdapter adapt=new FruitAdapter(this,frulist);lv.setAdapter(adapt);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuD8l27H-1665745053827)(C:\Users\Administrator\Pictures\Saved Pictures\7.14.7.PNG)]

编辑删除

 public View getView(int position, View convertView, ViewGroup viewGroup) {//convertView当初列表项的视图hellno he=null;if (convertView==null){he=new hellno();convertView= LayoutInflater.from(context).inflate(R.layout.listview_item,null);he.im=convertView.findViewById(R.id.imago);//图片he.tv=convertView.findViewById(R.id.textTV);//文字he.delImg=convertView.findViewById(R.id.shanVie);//获得删除图片按钮convertView.setTag(he);//放入数据}else{he=(hellno) convertView.getTag();//删除数据}Fruit fr=fruitlist.get(position);//获得此类he.im.setImageResource(fr.getImg());//得到此类的图片并设置he.tv.setText(fr.getName());//获得此类文字并设置if(ediEut){//判断是否显示he.delImg.setVisibility(View.VISIBLE);//显示}else{he.delImg.setVisibility(View.GONE);//隐藏,不显示}he.delImg.setOnClickListener(new View.OnClickListener() {//监听图片是否被点击@Overridepublic void onClick(View view) {fruitlist.remove(position);//点击后删除此排数据notifyDataSetChanged();//刷新}});return convertView;}
}
class hellno{ImageView im=null;TextView tv=null;ImageView delImg=null;
}//总调度台Button ediBut=findViewById(R.id.efiBut);//按钮ediBut.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {String num=ediBut.getText().toString();if("编辑".equals(num)){adapt.setEdiEut(true);//设置显示效果adapt.notifyDataSetChanged();//刷新ediBut.setText("完成");//把编辑字体改变成为完成字体}else{adapt.setEdiEut(false);//设置显示效果adapt.notifyDataSetChanged();ediBut.setText("编辑");//把编辑字体转变成为编辑}}});

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yiM6yV9q-1665745053828)(C:\Users\Administrator\Pictures\Saved Pictures\7.15.3.PNG)]

日期

 <!--android:datePickerMode选择模式:calendar日历 spinner下拉框,默认日历方式显示android:calendarViewShown  日历是否显示,和spinner结合使用android:maxDate    可以选择的最大日期 以mm/dd/yyyy格式--><DatePickerandroid:id="@+id/oneDay"android:layout_width="match_parent"android:layout_height="match_parent"android:datePickerMode="spinner"android:calendarViewShown="false"android:maxDate=""/>

时间选择器

<!---android:timePickerMode选择模式 clock钟表(默认) spinner下拉框--><TimePickerandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:timePickerMode="spinner"/>
Chronometer chro =findViewById(R.id.chron);chro.setBase();//参考时间chro.setCountDown();//倒计时chro.setFormat();//格式化chro.start();//计时开始chro.stop();//计时结束System.currentTimeMillis();//系统当前的时间SystemClock.elapsedRealtime();//开机以来的毫秒值,包含锁屏的时间chro.setOnChronometerTickListener();//计时器监听器

布局方式

线性布局

LinearLayout 线性布局

​ android:orientation horizontal水平 vertical垂直

​ android:grivity gravity 子控件的整体对齐方式

android:layout_weight 子控件在父控件的占比–可以设置在任何控件中


droid:layout_height=“wrap_content”
android:timePickerMode=“spinner”
/>

```java
Chronometer chro =findViewById(R.id.chron);chro.setBase();//参考时间chro.setCountDown();//倒计时chro.setFormat();//格式化chro.start();//计时开始chro.stop();//计时结束System.currentTimeMillis();//系统当前的时间SystemClock.elapsedRealtime();//开机以来的毫秒值,包含锁屏的时间chro.setOnChronometerTickListener();//计时器监听器

布局方式

线性布局

LinearLayout 线性布局

​ android:orientation horizontal水平 vertical垂直

​ android:grivity gravity 子控件的整体对齐方式

android:layout_weight 子控件在父控件的占比–可以设置在任何控件中

Android学习(一)相关推荐

  1. Android学习路线

    Android学习路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环.  2.String和StringBuffer的使用.正则表达式.  3.面向对象的抽象,封装,继承 ...

  2. 一篇文章一张思维导图看懂Android学习最佳路线

    一篇文章一张思维导图看懂Android学习最佳路线 先上一张android开发知识点学习路线图思维导图 Android学习路线从4个阶段来对Android的学习过程做一个全面的分析:Android初级 ...

  3. Android学习系列(10)--App列表之拖拽ListView(上)

    研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨.       鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章. ...

  4. Android学习第一书

    大家好,我是一名Facebook的工程师,同时也是<第一行代码--Android>的忠实读者. 虽然我最近几年是在国外读书和工作的,但是和很多人一样,我也非常喜欢郭霖的博客以及他写的< ...

  5. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  6. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天--JAVA基础回顾 这才学习Android的 ...

  7. Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK

    原文:Android学习-- 基于位置的服务 LBS(基于百度地图Android SDK)--定位SDK 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  8. 我的Android学习体系

    我的Android学习之路历经坎坷啊,现在回过头来主要想分享下我学习Android开发所走过的过程中所学会的一些误区和弯路,那些让自己的进步一直很慢的原因,一直没有什么成就的原因,希望其他人可以借鉴我 ...

  9. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天--项目开始 Android知识点的学习告一 ...

  10. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

最新文章

  1. abs 不会整数 方法 溢出_在 Golang 中针对 int64 类型优化 abs()
  2. php manager如何安装目录,宝塔面板安装OneManager-php – Onedrive的列表索引和管理程序...
  3. ThinkPHP入门--后盾视频
  4. 串口使用stream_使用SerialPort库进行Node物联网项目开发
  5. python列表中enumerate和zip函数用法
  6. J.U.C系列(六)ForkJoin的使用
  7. Windows Embedded Compact 7开发环境的搭建
  8. 【04】Effective Java - 类和接口
  9. vue跨域问题:proxy代理跨域
  10. vue入门学习(基础篇)
  11. Linux命令行常用小结
  12. 【蓝桥杯】 三行代码解决 “全排列的价值”(2022省赛pythonA组)
  13. 分享大牛们的刷题经验——比你聪明的人还在拼命努力,你有什么资格浪费时间
  14. mysql怎么递归查询下级_mysql递归查询上下级
  15. SpringCloud七:配置中心Eureka+Config+Bus+RabbitMQ
  16. Word入门教程之插入文字批注(转)
  17. 计算机的经历和灵感,从电脑编程灵感中得到的启发
  18. java 新特性-TWR(Try-with-resources)
  19. POJ 2152 fire / SCU 2977 fire(树型动态规划)
  20. 分布式系统:what、why、how

热门文章

  1. 漏洞管理失败?企业漏洞管理面临的三大困境
  2. 为了与亚马逊竞争 沃尔玛开始通过分析UGC内容做商品推荐
  3. 小米华为vivooppo手机记录隐私证据查询
  4. RCS融合通信相关资料
  5. mysql存储过程传参问题
  6. 芯片低功耗设计方法概述。
  7. Linux中lock和unlock的作用,lock与unlock
  8. GIZA++实现了IBM模型1~5 IBM Model 1详解
  9. 企业如何实现ERP与MES系统的集成?
  10. 基于多模态脑连接体的晚年抑郁症患者自杀风险预测