(个人经验,仅供参考,错误之处,敬请谅解)
图片 (ImageView)
<ImageView
android:layout_width="--"
android:layout_height="--"
android:scaleType="--" //如何缩放
android:tint="--" //着色
android:src="--" //图片源文件
android:id="--"/>
setImageResouce() 改变图片源文件
切换图片:
1、点击切换(onClick事件)
2、滑动切换(onTouch事件)
imgview.setClickable(true);
imgview.setOnTouchListener(new View.OnTouchListener() {
int oldx;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN://按下
oldx= (int) event.getX();
break;
case MotionEvent.ACTION_UP://抬起
if(event.getX()>oldx){//右滑,前一张图片
imgid--;
if(imgid<0)imgid=imgs.length-1;
}
else {
imgid++;
if(imgid==imgs.length)imgid=0;
}
imgview.setImageResource(imgs[imgid]);
break;
}
return false;
}
});
列表 (ListView)
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="--"
android:divider="--" //显示分割图形
android:id="@+id/listView"/>
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
//长按
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return true; //true 不触发单击事件,false触发单击事件
}
});
使用BaseAdapter时对listview的资源优化示例:
功能与RecyclerView类似
private class MyBaseAdapter extends BaseAdapter {
@Override
public int getCount() {
return names.length;
}
@Override
public Object getItem(int position) {
return names[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder myHolder;
if(convertView==null){
convertView=getLayoutInflater().inflate(R.layout.staritem_layout,null);
myHolder=new MyHolder();
myHolder.img= (ImageView)convertView.findViewById(R.id.item_img);
myHolder.txt= (TextView) convertView.findViewById(R.id.item_tv);
convertView.setTag(myHolder);
}
else{
myHolder= (MyHolder) convertView.getTag();
}
myHolder.img.setImageResource(imgs[position]);
myHolder.txt.setText(names[position]);
return convertView;
}
}
class MyHolder{
ImageView img;
TextView txt;
}
导航栏 (ActionBar)
ActionBar actionBar = getActionBar(); //如果返回空指针,使用getSupportActionBar()
actionBar.setDisplayHomeAsUpEnabled(true); //启用向上导航功能
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.home:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
常用菜单:
- 选项菜单 (OptionsMenu)
- 快捷菜单 (ContextMenu)
- 子菜单 (SubMenu)
- 弹出菜单 (PopupMenu)
1、
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.mymenu,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.about:
break;
case R.id.help:
break;
}
return super.onOptionsItemSelected(item);
}
2、
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.contextmenu,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.c1:
break;
}
return super.onContextItemSelected(item);
}
3、双层嵌套
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/about"
android:title="关于"
>
<menu>
<item android:title="111"/>
<item android:title="2222"/>
</menu>
</item>
<item android:id="@+id/help"
android:title="帮助"/>
</menu>
4、
public void showPopupmen(View v){
PopupMenu popupMenu=new PopupMenu(this,v);
getMenuInflater().inflate(R.menu.mymenu,popupMenu.getMenu());
popupMenu.show();
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.about:
break;
case R.id.help:
break;
}
return false;
}
});
}
xml文件布局中的showAsAction属性:
always表示永远显示在ActionBar中,如果屏幕空间不够则无法显示
ifRoom表示屏幕空间够的情况下显示在ActionBar中,不够的话就显示在overflow中
never则表示永远显示在overflow中
日期选择控件 (DatePicker)
- 以布局形式
<DatePicker
android:layout_width="--"
android:layout_height="--"
android:theme="--"
android:calendarViewShown="false"
android:id="@+id/datePicker"/>
public void getDate(View v){
int year,month,day;
year=dp.getYear();
month=dp.getMonth();
day=dp.getDayOfMonth();
}
- 以对话框i形式
public void search2(View v){
int year,month,day;
Calendar ca=Calendar.getInstance();
year=ca.get(Calendar.YEAR);
month=ca.get(Calendar.MONTH);
day=ca.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dpd=new DatePickerDialog(this,
AlertDialog.THEME_HOLO_LIGHT,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
},year,month,day);
dpd.show();
}