安卓为什么要有src
① 关于Android界面组件的基本用法
1.文本框(TextView)和编辑框(EditText)
文本框(TextView)不允许用户编辑文本内容,而编辑框(EditText)允许用户编辑文本内容
2.按钮(Button)和图片按钮(ImageButton)
Button显示文字,ImageButton显示图片。
为ImageButton指定android:text属性没用,不会显示文字
可以指定android:background为按钮增加背景图片,但这图片是固定的
可以指定android:src为图片按钮增加图片属性
其实,src才是设置图标,而background只是设置背景。
如果控件的大小是100 100 图片资源是80 80的话,那么用src,图片就会居中显示,如果使用background那么图片就会被拉伸充满控件。
重要的是,background是底层的图片资源,src是覆盖在background上面的资源,他们可以叠加使用,实现选中的效果。
3.单选按钮(RadioButton)和复选框(CheckBox)
多了一个android:checked属性,用于指定初始时是否被选中
4.计时器组件Chronometer用法
红色字体表示常用的方法
5.图像视图(ImageView)
它支持属性android:scaleType setScaleType(ImageView.ScaleType)
matrix(ImageView.ScaleType.MATRIX):使用matrix方式进行
fixXY(ImageView.ScaleType.FIX_XY):对图片横向纵向独立缩放,会改变纵横比
fitStart(ImageView.ScaleType.FIT_START):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在左上角
fitCenter(ImageView.ScaleType.FIT_CENTER):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在中央
fitEnd(ImageView.ScaleType.FIT_END):保持纵横比,图片较长的边长与ImageView相应的边长相等,缩放后放在右下角
center(ImageView.ScaleType.CENTER):放中间,不缩放
centerCrop(ImageView.ScaleType.CENTER_CROP):保持纵横比,使图片能完全覆盖ImageView
centerInside(ImageView.ScaleType.CENTER_INSIDE):保持纵横比,使ImageView能完全显示图片
6.spinner的功能和用法
如果可以确定spinner里面的列表项,那么直接在/res/layout/main.xml里面指定
然后在/res/value/string.xml里面指定
如果不确定里面的列表项,那么必须要提供一个Adapter,这个Adapter负责决定Spinner列表每项的内容
7.日期、时间选择器(DatePicker和TimePicker)
8.自动完成文本框(AutoCompleteTextView)
比普通文本框多了一个功能:当用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单后,组件会按用户选择自动填写该文本框
使用该组件很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本
9.进度条(ProgressBar)
通过style属性可以为ProgressBar指定风格。该属性可以有如下的属性值:
1.@android:style/Widget.ProgressBar.Horizontal 水平进度条
2.@android:style/Widget.ProgressBar.Inverse 不断跳跃、旋转画面的进度条
3.@android:style/Widget.ProgressBar.Large 大进度条
4.@android:style/Widget.ProgressBar.Large.Inverse不断跳跃、旋转画面的大进度条
5.@android:style/Widget.ProgressBar.Small 小进度条
6.@android:style/Widget.ProgressBar.Small.Inverse不断跳跃、旋转画面的小进度条
ProgressBar提供如下方法来操作进度
1.setProgress(int) 设置进度的完成百分比
2.incrementProgressBy(int) 设置进度条的增加或减少。参数为正增加,参数为负减少
10.选项卡(TabHost)
TabHost仅仅只是一个简单的容器,它提供如下方法
1.newTabSpec(String tag) 创建选项卡
2.addTab(TabHost.TabSpec tabSpec) 添加选项卡
使用TabHost的一般步骤为:
• A. 在界面中定义TabHost组件,并为该组件定义该选项卡的内容
• B. Activity应该继承TabActivity
• C. 调用TabActivity的getTabHost()来获取TabHost对象
• D. 通过TabHost对象的方法来创建选项卡、添加选项卡
选项卡主要由TabHost、TabWidget、FrameLayout3个组件组成,三者缺一不可,想象一下选项卡的特点,多个卡重叠在一起,所以用FrameLayout即帧布局是必要的。另外需要注意的是TabHost、TabWidget、FrameLayout三个组件的android:id必须使用系统默认的名称,而不能自己随意定义,否则会出错。
11.图像切换器(ImageSwitcher)
12.网格视图(GridView)
使用GridView一般指定numColumn大于1,否则取默认值为1.那么GridView就变成了ListView
属性android:stretchMode支持如下属性
1.none 不拉伸
2.spacingWidth 仅拉伸元素之间的间距
3.spacingWidthUniform 表格、元素之间的间距一起拉伸
4.columnWidth 仅拉伸表格
13.画廊视图(Gallery)(现在已经被弃用了,不过还是列出来吧)
Gallery用法很简单——为它提供一个内容Adapter,该Adapter的getView方法所返回的View可作为Gallery的列表项。可以通过OnItemSelectedListener监听选择项的改变
14.列表试图(ListView和ListActivity)
1.创建ListView由两种方式:
2.直接使用ListView进行创建
让Activity继承ListActivity(继承了ListActivity的类无需调用setContentView()来显示页面,可以直接设置适配器)
一旦获得ListView后,就要创建显示的列表项了。需要借助内容Adapter,内容Adapter负责提供需要显示的列表项
创建ArrayAdapter时必须指定一个textViewResourceId,该参数决定每个列表项的外观
1.simple_list_item_1 每个列表项是普通的TextView
2.simple_list_item_2 每个列表项是普通的TextView(字体略大)
3.simple_list_item_checked 每个列表项是已勾选的列表项
4.simple_list_item_multiple_choice 每个列表项是带多选框的文本
5.simple_list_item_single_choice 每个列表项是带多单选按钮的文本
15.使用AlertDialog
1.创建AlertDialog.Builder对象,该对象是AlertDialog的创建器
2.调用AlertDialog.Builder方法为对话框设置图标、标题等
3.调用AlertDialog.Builder的create()方法创建AlertDialog对话框
4.调用AlertDialog的show()方法显示对话框
16.使用Toast显示提示框
步骤如下:
• 调用Toast构造器或makeText方法创建Toast对象
• 调用Toast方法来设置该消息的对齐方式等
• 调用Toast的show()方法显示出来
• Toast toast = Toast.makeText(ToastTest.this, "信息", Toast.LENGTH_LONG).show();
17.Notification(一般显示网络状态、电池状态、时间等)
使用Notification发送Notification步骤:
• 调用getSystemService(NOTIFICATION_SERVICE)方法获取系统的Notification Manager服务
• 通过构造器创建一个Notification对象
• 为Notification设置属性
• 通过Notification Manager发送Notification
② 与Android应用程序相关的文件目录都有哪些
1.1src文件夹和assets文件夹:
每个Android程序都包含资源目录(src)和资产目录(assets),资源和资产听起来感觉没有多大差别,但在存储外部内容时用资源(src)比较多,其中它们的区别在于存放在资源(src)下的内容可以通过应用程序的R类进行访问,而存放在资产(assets)下的内容会保持原始文件的格式,如果需要访问,则必须使用AssetManager以字节流的方式来读取,用起来非常的不方便。为了方便使用,通常文件和数据都会保存在资源(src)目录下
1.2res(Resource)目录:资源目录
可以存放一些图标,界面文件和应用中用到的文字信息,下图为res目录截图:
1.2.1 drawable-*dpi文件夹:将图标按分辨率的高低放入不同的目录,其中draeable-hdpi用来存放高分辨率的图标,drawable-mdpi用来存放中等分辨率的图标,drawable-ldpi用来存放低分辨率的图标
1.2.2 values文件夹:用来存放文字的信息
(1)strings.xml:用来定义字符串和数值
每个string标签生命了一个字符串,name属性指定它的引用值
1.2.3 layout文件:用来存放界面信息
1.3 gen目录:gen目录下只有一个自动生成的“R.java”文件
1.4 AndroidManifest.xml 功能清单文件
1.5<project.properties>应用要求运行的最低Android版本
1.6<android 2.2> 存放Android自身的jar包
③ 安卓设备上的SRC问题-如何影响到最终的音质
什么是SRC?
SRC就是Sample Rate Convertor采样频率转换器,intel AC97规范约定了声卡需要经过这样一个处理过程,即将所有信号重新转换成一个统一的采样率输出。SRC如果进行了非整数倍的转换的话,比如44100->48000,会有较大的噪声或者谐波出现,这些噪声因转换器的质量高低、算法好坏而定,不优秀的算法会比较严重的影响听感。既然SRC是一个可能破坏音质的过程,为什么会有这么一个产物呢?前面就说过,AC97是为了节省成本而订,SRC的结果可以为声卡省下一颗Crystal。SRC一般都通过软件运算转换,这样受驱动版本的影响非常之大,例如Live!系列,SRC品质最好的是Windows Server2003 自带的驱动,也有使用硬件SRC的,例如:CS4630音频加速器。硬件SRC的品质往往大大优于软件的SRC,SRC品质的好坏的重要性甚至比Codec的档次更重要
④ SRC问题可解决 安卓手机音频分析与测试
【IT168评测】现在一台智能手机继承了非常多的功能,很多的人都会选择使用手机来听歌,手机的音乐播放功能足以取代了以前的MP3播放器的位置。实用手机来听歌当然是非常方便,但是往往会觉得手机的音质并不是太好,特别是安卓系统的智能手机。
▲智能手机SRC测试
其实安卓智能系统的音频架构导致了安卓手机的音乐播放质量差的问题,问题根源在于安卓系统在播放采样频率高于44.1KHz的音频是会强制音频的采样频率降低到44.1KHz,在这个过程中直接导致了出现SRC的问题,这是安卓系统的硬伤。关于安卓系统音频架构可参考《寻找音质变差元兇 聊聊Android音频架构》
什么是SRC?SRC即Sample Rate Converter,中文意思为采样频率转换。它被声卡爱好者所关注,大部分发烧友视SRC为音质杀手。
▲安卓手机普遍存在SRC问题
最近我们收到了一款智能手机针对这个问题提出了他们的解决方案,使得安卓手机在音乐播放音质方面可以领先与其他的安卓智能手机,事实是否如此?下面我们来测试一下。
如何测试?
这款智能手机能够解决安卓系统SRC问题在众多手机厂商中算是第一个,我们来对这款手机测试一下,首先是使用20Hz到20KHz的全频扫描进行测试,之后是进行主观听感的测试。
▲测试使用的44.1KHz音频和48KHz音频
全频扫描测试使用2个采样频率的wav文件,44.1KHz的音频和48KHz的音频,将文件放在手机中进行播放,使用cool edit pro录音,对录音进行频谱分析,入股出现SRC频频就会出现杂乱无章的线路。
▲正常没出SRC的图像
▲出现SRC时的图像
第二张图就是SRC的图像,现在很多安卓手机都会存在SRC问题,理论上测试结果和第二张图相似,而步步高vivo智能手机解决了SRC问题测试结果应该要接近第一张图。
▲测试使用E-MU 0404专业声卡
由于我们手上没有专业的测试设备,只能使用电脑进行测试,测试使用E-MU 0404 PC专业声卡作为输入声卡,采用cool edit pro来录音,由于测试环境并不是十分专业可能会有少量的噪音引入,而图像也不是十分完美,但也可以反映出问题。
SRC测试
这次测试不仅仅针对某品牌的智能手机,我们也找来了Nexus S和魅族M9进行对比,下面来看一下测试的结果。
44.1KHz采样频率音频扫描:
▲Nexus S测试图像(点击放大)
▲魅族M9测试图像(点击放大)
▲某品牌安卓测试图像(点击放大)
上面的测试图可以看到安卓系统在44.1KHz的采样频率下图像都是非常干净的,代表音质是没有受到任何影响,这是由于安卓音频架构规定的采样频率是44.1KHz,对于大部分的MP3音频都是在44.1KHz的采样频率,对于MP3音频安卓系统基本上问题不大。
48KHz采样频率音频扫描
48KHz采样频率音频扫描是这次测试的重点,因为安卓系统的音频架构限制了44.1KHz的采样频率,所以高于44.1KHz的采样频率就会转换成44.1KHz,直接导致音质变差,下面来看一下测试结果。
▲Nexus S测试图像(点击放大)
▲魅族M9测试图像(点击放大)
测试结果惨不忍睹,Nexus S采用安卓4.0系统SRC问题依然存在,图像出现了很多的交错的线条,而魅族M9采用安卓2.3系统测试的图像也说明SRC问题非常严重。
▲某品牌安卓智能手机测试图像(点击放大)
某品牌安卓智能手机进行48KHz采样频率音频扫描结果要比上面两款手机要好很多,只在扫描直线上面出现一条很浅色的直线,像对于其他的安卓系统已经是一个非常大的飞跃,对于播放高音质的音频这款安卓智能手机能更好还原原本音质。
主观听感:
▲测试使用的48KHz采样频率的MP3
说完理论的东西来点实际的听感,试用手机听音乐已经是相当普遍,测试使用2首48KHz采样频率的MP3进行测试,试听某品牌智能手机上和其他智能手机音质有什么区别。
▲测试使用UE TF10耳机
首先来听一下一般安卓手机播放48KHz采样频率的MP3,测试使用了UE TF10入耳耳机,听感觉得声音偏暖,有点朦胧的感觉,而音乐的细节有些地方无法很好的展现,这个问题在几台安卓手机上同样遇到,音色都是暖,细节表现不佳。而用耳机听回前面的20Hz-20KHz扫描是明显发现问题了,除了扫描信号的声音外还可以听到背后有一些跟着扫描信号一起响起的音频扫描声音,这就是图像上交错的线条,严重影响听感。
再来说一下某品牌智能手机上的听感,试听这2只48KHz采样频率的MP3时整体声音很清晰自然,细节表现非常清晰,没有过多的音染,音场也比较宽广,整体上表现非常好。再听音频扫描信号,并没有出现前面的情况,只会听到音频扫描信号,非常干净,没有任何干扰。
测试总结:
▲SRC问题解决究竟用了什么技术?
通过这个测试可以看到某品牌的安卓智能手机很好地解决了安卓手机SRC问题,提升了安卓手机音频播放的音质,虽然由于保密原因现在不方便公布这品牌,而且还不知道采用了什么技术来解决安卓系统的SRC问题,但是可以肯定的是这个品牌的安卓智能手机是第一个解决安卓系统SRC问题的手机。这个决绝SRC问题的技术也将会会公布,到时我们也会为大家公布这个手机品牌和型号。
⑤ 安卓手机根目录下的各个文件夹有什么作用
作用:
1.res:资源文件。
2.drawable:布局文件。
3.layout:布局文件。
4.anim:动画效果文件。
5.values:取值、字符串等。
6.src:代码,至于src内部的目录名称,取决于具体项目结构。
7.libs:库文件。
⑥ android 工程src文件夹怎么分类
Android 项目中文件夹的作用
1. src:存放所有的*.java源程序。
2. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID。
3. assets:可以存放项目一些较大的资源文件,例如:图片、音乐、字体等。
4. res:可以存放项目中所有的资源文件,例如:图片(*.png、*.jpg)、文本等。
5. res\drawable-hdpi:保存高分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
6. res\drawable-ldpi:保存低分辩率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
7. res\drawable-mdpi:保存中等分辨率图片资源,可以使用Resources.getDrawable(id)可以获得资源类型。
8. res\layout:存放所有的布局文件,主要是用于排列不同的显示组件,在Android程序中要读取此配置。
9. res\values: 存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称:
· arrays.xml:定义数组数据;
· colors.xml:定义表示颜色的数据;
· dimens.xml:定义尺度,可以使用Resources.getDimension()获得这些资源;
· strings.xml:定义字符串,可以使用Resources.getString()或Resources.getText()方法获得这些资源;
· styles.xml:定义显示的样式文件;
10.res\raw:自定义的一些原生文件所在目录,像音乐、视频等文件格式,Resources.getRawResource()方法可以获得这些资源。
11. res\xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序之中,在程序运行时可以使用Resources.getXML()方法获取。
12. res\anim:用于定义动画对象;
13. bin:生成apk的文件夹。
⑦ 安卓手机根目录下的各个文件夹的作用,麻烦详细介绍。
1、HelloWorld项目的目录结构
1.1、src文件夹
1.2、gen文件夹
1.3、Android 2.1文件夹
1.4、assets
1.5、res文件夹
1.6、AndroidManifest.xml
1.7、default.properties
图1、HelloWorld项目目录结构
下面将分节介绍上面的各级目录结构。
1.1、src文件夹
顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:
package helloworld.test;
import android.app.Activity;
import android.os.Bundle;
public class HelloWorld extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文 件。他导入了两个类android.app.Activity和android.os.Bundle,HelloWorld类继承自Activity且重 写了onCreate方法。
以下说明针对没有学过Java或者Java基础薄弱的人
@Override
在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。
例如,public void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,
如果你写成public void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——
The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,
以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)
而如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。
android.app.Activity类:因为几乎所有的活动 (activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放 到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:
onCreate(Bundle): 初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地 交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关 操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。
onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。
android.os.Bundle 类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法—— public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以 它具有这两者的特性。
1.2、gen文件夹
该 文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R
⑧ 安卓系统src问题
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。
一直以来,Android系统由于底层语言的问题,在音频播放上存在一个漏洞,即48khz采样率转换为44.1khz会被劣质SRC。这种被劣质SRC的问题,使得音频信号在安卓设备里受到了扭曲和损耗,产生大量噪波,立体声播放层次等这些指标全面受损。而用户需求较多的高品质音乐母生带、高清视频、游戏等的音频都是高于44.1khz的采样率;因此有很多用户不厌其烦抱怨安卓机器的音质失真和受损问题。
通过一段标准音频理论状态下的光谱图,我们可以发现正常安卓机型在播放48khz音频时,光谱图可谓惨不忍睹。主信号周围出现了巨量的噪波,主信号基本难以分辨,因此难免会出现声道串声,杂音,变调等问题。
近期智能手机厂商vivo发布了其自主研发的音频技术VRS。据了解,vivo的VRS技术声称完全解决了上述困扰安卓系统音频播放的梦魇,并得到了国家专利受理。
而应用了VRS音频技术的vivo V1智能手机在播放48khz音频时,完全不存在任何问题,其主信号的保真度接近于理论完美状态。虽然信号源质量并不完全代表最后的听感,但我们也知道,有了接近无损的信号源,是能够取得优秀播放效果的前提。可见,VRS技术的出现,表明vivo智能手机在致力于追求产品完美的音质享受探索又迈上了一个新的高度。