uses-permission
我们在安装Android软件的时候,系统会提示该软件所需要的权限,相对于其他系统,android的权限非常多。
我们在开发软件的时候,也需要声明相应的权限,比如希望软件能发短信,需要声明软件调用短信的权限,否则软件运行的时候就会报错。
Android的权限在AndroidManifest.xml文件里配置。
AndroidManifest文件中有四个标签与permission有关,它们分别是 <permission>、 <permission-group> 、<permission-tree> 和 <uses-permission>。
其中最常用的是 <uses-permission>,当我们需要获取某个权限的时候就必须在我们的manifest文件中声明<uses-permission>。
<permission>和 <uses-permission>的作用相似,两者之间的不同之处,<uses-permission>是android预定义的权限,<permission>是自己定义的权限。
<uses-permission>是我们用的最多的,官方文档定义方式如下:
<uses-permission android:name="string" />
//例如
<uses-permission android:name="android.permission.CALL_PHONE" /> <!--电话-->
<uses-permission android:name="android.permission.SEND_SMS"/> <!--短信-->
<uses-permission android:name="android.permission.INTERNET" /> <!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 允许程序访问有关GSM网络信息 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 允许程序改变网络连接状态 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 写入SD卡 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 允许访问振动设备 -->
ImageView
src属性和background属性的区别:
在API文档中我们发现ImageView有两个可以设置图片的属性,分别是:src和background;
①background通常指的都是背景,而src指的是内容;
②当使用src填入图片时,是按照图片大小直接填充,并不会进行拉伸;
而使用background填入图片,则是会根据ImageView给定的宽度来进行拉伸。
常用属性:
android:adjustViewBounds:设置ImageView是否调整自己的边界来保持所显示图片的长宽比。
android:maxHeight:设置ImageView的最大高度。
android:maxWidth:设置ImageView的最大宽度。
android:scaleType:设置所显示的图片如何缩放或移动以适应ImageView的大小。
android:src:设置ImageView所显示的Drawable对象的ID。
对于android:scaleType属性,因为关于图像在ImageView中的显示效果,所以有如下属性值可以选择:
matrix:使用matrix方式进行缩放。
fitXY:横向、纵向独立缩放,以适应该ImageView。
fitStart:保持纵横比缩放图片,并且将图片放在ImageView的左上角。
fitCenter:保持纵横比缩放图片,缩放完成后将图片放在ImageView的中央。
fitEnd:保持纵横比缩放图片,缩放完成后将图片放在ImageView的右下角。
center:把图片放在ImageView的中央,但是不进行任何缩放。
centerCrop:保持纵横比缩放图片,以使图片能完全覆盖ImageView。
centerInside:保持纵横比缩放图片,以使得ImageView能完全显示该图片。
RadioButton
单选按钮,当与其他单选按钮成对出现时,允许用户从一组选项中选择单个选项。
也就是说,当同一个容器中存在两个以上的单选按钮时,只能有一个被选中。
但不在同一个容器中的几组单选按钮彼此不关联,是可以有多个被选中的。
Checked属性最重要的属性之一,该属性是一个布尔类型的值;
如果被选中,Checked的值为true,否则为false。常用于判断选项是否被选中。
举例:
//xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请选择性别" />
<RadioGroup
android:id="@+id/rg_sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_Male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/rb_FeMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
</LinearLayout>
//java
public class MainActivity extends AppCompatActivity{
private RadioGroup rg;
private RadioButton rb_Male, rb_Female;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radiobutton);
rg = (RadioGroup) findViewById(R.id.rg_sex);
rb_Male = (RadioButton) findViewById(R.id.rb_Male);
rb_Female = (RadioButton) findViewById(R.id.rb_FeMale);
//注意是给RadioGroup绑定监视器
rg.setOnCheckedChangeListener(new MyRadioButtonListener() );
}
class MyRadioButtonListener implements OnCheckedChangeListener {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// 选中状态改变时被触发
switch (checkedId) {
case R.id.rb_FeMale:
// 当用户选择女性时
Log.i("sex", "当前用户选择"+rb_Female.getText().toString());
break;
case R.id.rb_Male:
// 当用户选择男性时
Log.i("sex", "当前用户选择"+rb_Male.getText().toString());
break;
}
}
}
}
FloatingActionButton
属性
android:src:FAB中显示的图标.
app:backgroundTint:正常的背景颜色 ,这里是ColorStateList类型
app:rippleColor:按下时的背景颜色
app:elevation:正常的阴影大小
app:pressedTranslationZ:按下时的阴影大小
app:layout_anchor:设置FAB的锚点,即以哪个控件为参照设置位置
app:layout_anchorGravity:FAB相对于锚点的位置
app:fabSize:FAB的大小,normal或mini(分别对应56dp和40dp)
app:borderWidth:边框大小,最好设置成0dp否则会有边框
android:clickable:一定要设置成true否则没有点击效果
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/activity_horizontal_margin"
app:srcCompat="@drawable/ic_wifi_tethering_white_24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />