- matrix :保持原图大小、从左上角的点开始,以矩阵形式绘图。
- fitXY :把图片按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满View.
- fitStart :把图片按比例扩大(缩小)到View的宽度,显示在View的上部分位置
- fitCenter :把图片按比例扩大(缩小)到View的宽度,居中显示
- fitEnd :把图片按比例扩大(缩小)到View的宽度,显示在View的下部分位置
- Center : 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放, 当图片长/宽超过View的长/宽,则截取图片的居中部分显示ImageView的size. 当图片小于View 的长宽时,只显示图片的size,不剪裁。
- centerCrop :以原图的几何中心点和ImagView的几何中心点为基准,按比例扩大(图片小于View的宽时)图片的size。 居中显示,使得图片长 (宽)等于或大于View的长(宽),并按View的大小截取图片。 当原图的size大于ImageView时,按比例缩小图片,使得长宽中有一向等于ImageView,另一向大于ImageView。 实际上,使得原图的size大于等于ImageView
- centerInside :以原图的几何中心点和ImagView的几何中心点为基准,将图片的内容完整居中显示, 通过按比例缩小原来的size使得图片长(宽)等于或小于ImageView的长(宽)
1、setImage Bitmap()2、setImage Drawable()3、setImage Resource()Spinner:下拉框
分析:数据,android有mvc概念。mvc:model,模型,v,视图,c:控制器
v:Spinner控件,m:控件中所需要的数据。c:适配器。
属性:android:prompt:提示文字(与版本有关)
方法:setPrompt(提示文字);
Spinner:下拉框
分析:数据,android有mvc概念。mvc:model,模型,v,视图,c:控制器
v:Spinner控件,m:控件中所需要的数据。c:适配器。
属性:android:prompt:提示文字(与版本有关)
方法:setPrompt(提示文字);
7.1:使用Spinner
1:在布局文件中创建一个Spinner元素。
2:定义数据。
2.1:将字符串数组定义在strings.xml文件中。
<string-arrayname="city">
<item >北京</item>
<item >广州</item>
<item >上海</item>
<item >深圳</item>
<item >长沙</item>
</string-array>
3;在Acitivity中将数据填充到Spinner里
3.1:找到控件
3.2:创建适配器
1:ArrayAdapter.createFromResource(上下文环境,数据源,显示数据的布局)
如果需要引用android自带的布局,可以使用android.R.layout
3.3: 给控件设置适配器
spinner.setAdapter(适配器对象);
4:添加监听器。
Spinner与ArrayAdapter的应用:(arrayAdapter的第一种使用方法,使用静态方法)
package com.example.day04_ul_spinner01;
public class MainActivity extends Activity {
// 声明一个私有变量
private Spinner spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到控件
spinner = (Spinner) findViewById(R.id.spiner);
// 创建适配器(Adapter)。
/*
* ArrayAdapter:只能显示文字。 创建对象的方式:
* 1:静态方法:createFromResource(上下文环境,数据,显示数据的布局); 显示数据的布局:
* 1:用系统自带的。android.R.layout 2:自定义布局。
*/
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
MainActivity.this, R.array.city,
android.R.layout.simple_spinner_item);
// 给控件设置适配器.
spinner.setAdapter(adapter);
// 添加监听器
plane.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
String str=parent.getItemAtPosition(position).toString();
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT)
.show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Spinner 与ArrayAdapter(其他用法)
public class MainActivity extends Activity {
private Spinner sp1,sp2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp1=(Spinner) findViewById(R.id.sp1);
sp2=(Spinner) findViewById(R.id.sp2);
String[]strings={"北京","上海"};
ArrayAdapter adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,strings);
sp1.setAdapter(adapter);
ArrayAdapter adapter2=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1);
adapter2.add("北京");
adapter2.add("上海");
sp2.setAdapter(adapter2);
//ArrayAdapter adapter=new ArrayAdapter<String>(MainActivity.this,R.layout.item,strings);(可以使用,但是R.layout.item必须是这种方式:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv"
>
</TextView>
)
}
}
8:ArrayAdapter:BaseAdater的子类。
子类只能存储文字。
数据:
1:数据定义在strings.xml,定义string-array
2:如何在代码中写数据。
9:SimpleAdapter:可以显示图片也可以文字。
构造函数参数说明:
参数说明:
* 1:上下文
* 2:数据的集合
* 3:列表每一项的布局
* 4:集合中Map的键值。
* 5:显示数据的控件ID的整形集合
步骤:
1:定义一个布局,定义如何摆放每一个列表项
2:放图片和文字数据
3:定义一个布局,放置Spinner控件
4:Activity代码
1:定义一个数组,装放图片的ID。
2:定义一个集合,集合的数据都是Map,将数据和图片的ID放到map中。再添加到list集合中
SimpleAdapter的使用:
public class MainActivity extends Activity {
private Spinner sp;
private int[]img_id={R.drawable.btn_check_off_disable_focused,R.drawable.btn_check_off_longpress,R.drawable.btn_check_off_pressed};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sp=(Spinner) findViewById(R.id.sp);
//获得定义在strings.xml文件中的数据
String[] text_id=getResources().getStringArray(R.array.text_id);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i <img_id.length; i++) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("text_name", text_id[i]);
map.put("image_id", img_id[i]);
list.add(map);
}
/**
* (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
* 上下文 数据源 自定义的子布局 用使用的数据的map中的key的值 自定义子布局的ID
*/
SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, list,R.layout.item, new String[] { "image_id", "text_name" },new int[] { R.id.iv, R.id.tv});
sp.setAdapter(adapter);
}
}
单选按钮的范例:
public classMainActivity extends Activity {
private Button bt;
private RadioGroup rg;
String string;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt=(Button)findViewById(R.id.bt);
rg=(RadioGroup)findViewById(R.id.rg);
bt.setOnClickListener(newOnClickListener() {
public void onClick(Viewv) {
int id =rg.getCheckedRadioButtonId();//获得选中项的id,如果没有选中返回-1
if (id!=-1){
Toast.makeText(MainActivity.this,((RadioButton)findViewById(id)).getText().toString(), 0).show();
}
}
});
}
}