Android基础小结

一.Android项目结构:
src:存放java代码的
gen:系统自动生成,,自己不用去动
assets:用来存放大的文件的地方,,,1MB做分割
bin:系统自动生成
libs:自己使用的类库存放地
res:所有资源文件存放的位置
drawable:存放图片
layout:布局,,手机上面的一个界面
menu:用来存放menu按钮里面显示的内容
values:用来存放各种各样的值
AndroidManifest.xml:清单文件,1.该应用所要显示的界面,2.该应用所需要的权限


二.Activity的创建:
1创建一个Activity类的子类。
2在AndroidManifest中的application标签中,注册Activity
3在activity标签的属性中,添加android:name属性,用来关联我们需要注册的Activity类
4如果我们的Activity需要作为程序入口的Activity存在,那么
就在AndroidManifest中的指定的那个Activity标签中,添加一个intent-filter:
<intent-filter>
<action name="android.intent.action.MAIN"/>
<category name="android.intent.category.LAUNCHER"/>
</intent-filter>


三.Activity生命周期(基本的7个生命周期):
onCreate Activity被创建的时候
onStart 界面被创建的时候,onStart方法执行完毕后,我们就可以在屏幕上看到界面
        onResume 可以操作界面时,onResume方法执行完毕后,我们就可以通过屏幕对Activity进行操作了
onPause Activity被部分遮盖时,会执行此方法。
  onStop Activity完全被遮盖,或退到后台。
  onDestroy Activity被销毁时,调用。
onRestart 从onStop状态回到运行状态,需要执行的第一个生命周期。


四.为Activity添加布局:
1在res/layout创建一个xml格式的布局文件,在创建布局文件的时候,我们还会选定它拥有的布局方式。
2在onCreate方法中,调用setContentView将我们的布局文件,设置给Activity。
3使用findViewById方法通过R文件对布局中控件的索引(R.id.btn_id)来找到指定控件的实例。这个时候我们就可以调用这些实例的方法如TextView调用getText即可获取TextView上面显示的文本信息,EditText调用getText获取一个Editable,再调用toString方法,将其转
换为字符串。
4Android的一种事件处理机制:listener,我们使用的大多是为按钮控件(Button)设置一个点击监听,后来我们还涉及到了一个为ListView设计的特别的监听器(onItemClickListener),将这些监听器以匿名内部类的形式创建出来,并且通过需要设置监听器的控件的setOnClickListener,setOnItemClickListener来设置给我们的控件。这样我们就能及时得获取到用户对界面的操作,并作出相应的处理。


五.布局类型:
1.AbsoluteLayout,绝对布局,使用坐标系规范屏幕,原点在左上角,x向右是正方向,y向下是正方向。


1.1关键属性:
layout_x,layout_y,在AbsoluteLayout中放置控件时,这两个属性是AbsoluteLayout特有的,只能在AbsoluteLayout中的控件才能使用。他们用来确定指定的控件的摆放坐标(控件左上角的坐标)。


1.2优缺点:
优点:使用AbsoluteLayout,能够最自由地去摆放我们界面上的控件。


缺点:由于AbsoluteLayout是使用坐标系的方式来确定子控件的摆放位置,但是由于Android平台屏幕的碎片化,我们不能确定用户的屏幕分辨率,那么我们贸然使用这种布局类型,可能让用户感受不一样,影响用户体验。


2.LinearLayout,线性布局,所有的子控件都排成一列整齐摆放。


2.1关键属性:
LinearLayout属性:
android:orientation="vertical"["horizontal"]
表示LinearLayout中的子控件的摆放方向,vertical垂直摆放(从上到下)。horizontal水平摆放(从左到右)。


android:baselineAligned="true"["false"]
表示LinearLayout中的子控件的摆放要依据基线来对齐。
true是对齐,false不对齐。


android:baselineAlignedChildIndex="childIndex"
表示以哪一个子控件的基线来对齐。


android:gravity="center_horizontal"
表示子控件对齐的方向,可以向左,右,上,下,居中...


子控件属性:
android:layout_weight="1.0"
这个属性只有在LinearLayout中有效,他表示我们的子控件所需要占据的大小,用于与其他的控件分割父控件的空间。




2.2优缺点:
优点:线性布局,受到屏幕分辨率影响最小。子控件排列整齐。


缺点:子控件只能按照指定的几种方式摆放,可能无法适应商业项目中部分花样繁多的功能界面的需求。




3.FrameLayout,帧布局,放置在内部的所有控件都会分层摆放,一个控件一层。后放入的控件会摆放在最上面的层里。如果最上面的一层的控件不够大,我们也能够看到他下面的其他控件。


3.1关键属性:
FrameLayout属性:
android:foreground,可以使用这个属性在整个布局的前面添加一个图片或者颜色。
android:foregroundGravity,调整由android:foreground设置的图片的对齐方向。


3.2优缺点
优点:有多重动画控件都由FrameLayout实现,说明FrameLayout很适合播放动画的功能界面实现。


缺点:约束比较强,控件摆放的方式只有这一种,对内部控件操作的手段也比较少。


4.RelativeLayout,相对布局,通过父控件的边或者以前设置的控件的位置,来确定现在放入的新的控件的位置。


4.1子控件的属性:
android:layout_alignParentTop
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight,贴到指定的父控件的边缘。


android:layout_toLeftOf
android:layout_toRightOf
android:layout_toStartOf
android:layout_toEndOf,放置在指定id的控件的指定方向上。


android:layout_above
android:layout_below,放置在指定id的控件的上或下。


android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
android:layout_alignBottom,与指定id的控件边缘对齐。


android:layout_centerInParent,将我们的控件放置在父控件的中间。


4.2优缺点
优点:内部子控件都是自己相对摆放,在屏幕分辨率出现巨大变化的时候,他们之间的相对位置都不会变。这个布局类型可以很大的减少我们屏幕出现变化时,界面效果的差异性。


缺点:当我们的控件之间的相对关系建立之后,不容易再做修改。


5.Tablelayout,表格布局,不过必须配合TableRow使用,否则就是一个垂直排列的线性布局。


5.1关键属性:
TableLayout:
android:stretchColumns="0"拉伸列,列号从0开始。
android:collapseColumns="0"隐藏列,同上。
android:shrinkColumns="0"收缩列,同上。


TableRow:
android:weightSum="5",此属性与控件的 android:layout_weight="1"一起使用,用来设置一行的所有控件的大小。


(只有新版本可以使用,在4.0版本后可以使用)
6.GridLayout,网格布局,不需要TableRow这么麻烦
6.1关键方法
android:columnCount="3"
android:rowCount="5"
可以通过上面两个方法方便设置我们网格布局的行数和列数。
子控件也可以使用android:layout_column="1"来设置子控件想排在第几个。


六.常用控件:
     1.TextView,文本框。


常用属性:
android:text 文本信息
android:textSize 字体大小(单位sp)
android:textColor 字体颜色
android:autoLink 能使文字中的电话号码,网址,邮箱变成类似于超链接的样子。
android:lines 行数
android:maxLength 最大字数
android:gravity ="left" 用于设置View中内容相对于View组件的对齐方式
textView.setVisibility(GONE/VISIBLE)  设置为不可见/可见 
        textView.setGravity(Gravity.CENTER)  设置文字权重 


     2.Button,按钮。


常用属性:
button.setTextColor(Color.BLUE);
设置文字颜色


        button.setTextSize(123);
        设置字体大小


button.setBackgroundColor(Color.BLUE);
设置控件背景色


android:onClick="单击响应方法的名字"


单击响应方法的写法:
public void 方法名(View view){}


android:enabled="false"
android:clickable="false"
设置按钮不可用

     3.EditText,可输入文本框,这个控件可以让用户输入文本信息。

常用属性:
android:hint="@string/email_hint"属性:
我们可以加入上面这条属性,用于给我们的编辑框加入一个提示信息。


android:inputType="textEmailAddress" 
这条属性,可以提供给我们调整软键盘样式的能力。我们可以得到只有数字或者方便输入邮箱地址的软键盘。


android:imeOptions="actionSend"
软键盘中总是有个确认按钮,这个按钮,并没有默认的响应方法,需要我们自定义。


android:password="true"
以密文形式输入信息。改回false之后,就有可以以明文形式输入。

     4.CheckBox,多选框。
我们一样可以使用标签形式将这种控件加入我们的应用。当然关键也是在于如何监听这个控件。


4.1.我们可以使用设置onClick的方式加入一个写在Activity中的点击响应方法。
4.2.我们可以使用多选框的监听器:OnCheckedChangeListener
自定义样式:
在android:button属性上设置Selector

     5.RadioButton,单选框。
这个控件不能单独使用,需要与RadioGroup一起使用。
然后给我们的RadioGroup加入一个OnCheckedChangeListener来监听我们的选择监听。不过这里一定要注意这个监听器和多选框的可不是一个,注意他们的包名!


     6.ListView,列表控件。实现一个数据列表,能方便地让我们修改数据,并同时影响界面。
<ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:entries="@array/Cities" >
</ListView>


ListView不只是一个View,还是一个ViewGroup(容器控件)。他是一个用于装载控件的容器。他本身并不用于显示数据,而是用来装载显示数据的控件(TextView,Button, EditText...)的容器。现在看来,其实ListView虽然是控件,但是他的作用更接近于我们的布局类型。不过,布局类型,能够直接在其中放置子控件。而ListView,只能通过适配器 ,加载他的子控件。


常用属性:
android:divider="@color/mycolor"  间隔线的图片或者颜色
android:dividerHeight="3dip"   间隔线的宽度,用于修改ListView中每个item之间的间隔线。
android:stackFromBottom="true"从列表最下方开始。
android:transcriptMode="alwaysScroll"一直显示新来的数据。
android:cacheColorHint="@android:color/transparent" 滑动时,背景透明。


七.适配器:
Adapter是适配器,适配器是用来连接两个不相干的事物的桥梁。在我们今天的课程中,适配器是用来连接我们的AdapterView和数据。
AdapterView中我们常用的有:ListView(列表控件),GridView(网格控件),Gallery(画廊)。


使用适配器的方式显示ListView:


1.在布局文件中,定义一个简单的ListView标签。
2.在Activity中实现一个我们自己扩展的BaseAdapter子类对象。
3.通过findViewById在Activity中找到布局文件中的ListView对象。
4.将适配器对象设置给我们的ListView对象。


ListView动态内容的动态添加:


1.由用户或服务器获取的数据,更新我们的数据容器。
2.然后调用Adapter.notifyDataSetChanged();来提醒ListView数据已经更新,
界面需要刷新。

ListView性能优化:


1.复用convertView
在getView的参数列表中,提供给我们了一个convertView,这个视图对象能为 我们提供一种性能优化的手段:复用刚推出屏幕范围的那个convertView。
2.减少findViewById的使用次数
在convertView中有一个Object类型的tag属性,我们可以再这个属性上存储一个对象。我们利用这个对象存一个我们定义的内部类对象,这个对象保存有我们的convertView的子控件 对象。这样我们复用convertView的时候也就可以复用我们以前取出的子控件对象了。
内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值