基础UI编程
来源:互联网 发布:手机必备软件大全2016 编辑:程序博客网 时间:2024/06/10 23:30
EditText 与 TextView
setOnKeyListener 事件
① 新建工程② 在main.xml 布局中添加UI 元素:一个EditText 和一个TextView
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/myEditText"/> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/myTextView"/> </LinearLayout>
③ 在mainActivity.java 主Activity 中修改代码
package zyf.EX_Ctrl_1; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class EX_Ctrl_1 extends Activity { private TextView mTextView01 private EditText mEditText01; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 取得TextView、EditText */ mTextView01 = (TextView) findViewById(R.id.myTextView); mEditText01 = (EditText) findViewById(R.id.myEditText); /* 设置EditText 用OnKeyListener 事件来启动*/ mEditText01.setOnKeyListener(new EditText.OnKeyListener(){ @Override public boolean onKey(View v, int keyCode, KeyEvent event) { mTextView01.setText(mEditText01.getText().toString()); return false; } }); } }
AlertDialog.Builder提示对话框
① 新建工程② 修改mainActivity.java 文件
package zyf.EX_Ctrl_3_B; import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; public class EX_Ctrl_3_B extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 设置主屏布局*/ setContentView(R.layout.main); /*新建一个AlertDialog.Builder对象*/ AlertDialog.Builder my_ADialog =new AlertDialog.Builder(this); /*设置标题*/ my_ADialog.setTitle("Android 提示"); /*设置显示消息*/ my_ADialog.setMessage("AlertDialog.Builder提示对话框消息!!"); /*显示*/ my_ADialog.show(); } }
CheckBox 的isChecked 属性
① 创建新工程② 在string.xml 中添加字符串
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Ex_Ctrl_4</string> <string name="advice">请勾选我同意</string> <string name="accept">您已接受同意!!</string> <string name="Notaccept">您未同意!!</string> <string name="allOK">全部许可</string> </resources>
③ 修改main.xml 布局,添加UI 元素
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/TextView_Guide" android:textSize="25px" android:text="@string/advice"> </TextView> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/TextView_youChoiceShow" android:textSize="25px"> </TextView> <CheckBox android:layout_height="wrap_content" android:layout_marginTop="100px" android:layout_marginLeft="90px" android:id="@+id/CheckBox_Accept" android:layout_width="120px"> </CheckBox> <Button android:layout_height="wrap_content" android:layout_marginLeft="90px" android:id="@+id/Button_OK" android:text="确定" android:layout_width="90px"> </Button> </LinearLayout>
④ 修改mainActivity.java 文件
package zyf.Ex_Ctrl_4; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.TextView; public class Ex_Ctrl_4 extends Activity { /** Called when the activity is first created. */ private TextView showAdvice,yourChoiceshow; private CheckBox iAccept; private Button ok; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /*findViewById()从资源ID获取资源对象*/ showAdvice=(TextView)findViewById(R.id.TextView_Guide); yourChoiceshow=(TextView)findViewById(R.id.TextView_youChoiceShow ); iAccept=(CheckBox)findViewById(R.id.CheckBox_Accept); ok=(Button)findViewById(R.id.Button_OK); /*获取XML中字符串*/ CharSequence titleString=getString(R.string.allOK); /*设置复选框标题*/ iAccept.setHint(titleString); /*设置复选框标题字体颜色*/ iAccept.setHintTextColor(Color.RED); /*将CheckBox设置成未选中*/ iAccept.setChecked(false); /*将Button设置成不可选*/ ok.setEnabled(false); iAccept.setOnClickListener(new CheckBox.OnClickListener(){ @Override public void onClick(View v) { if(iAccept.isChecked()){ ok.setEnabled(true); yourChoiceshow.setText(R.string.accept); }else{ ok.setEnabled(false); yourChoiceshow.setText(R.string.Notaccept); } } }); ok.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { if(iAccept.isChecked()){ showAdvice.setText(R.string.accept); } } }); } }
自定义下拉菜单
Spinner 与setDropDownViewResource
① 新建项目,在res 目录下新建一个anim 文件夹,存放动画效果用,在其中新建一个my_anim.xml 文 件<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"> </translate><!--位置转换动画效果--> <alpha android:fromAlpha="3.0" android:toAlpha="6.0" android:duration="300"> </alpha><!--透明度转换动画效果--> </set> ② 在res 目录下的layout 文件夹中新建一个myspinner_dropdown.xml 文件,用来存放下拉菜单弹出内 容的布局 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="24sp" android:singleLine="true" style="?android:attr/spinnerDropDownItemStyle" /> ③ 修改main.xml,添加UI 元素 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/widget28" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/TextView_Show" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="你选择的是" android:textSize="25sp"> </TextView> <Spinner android:id="@+id/spinner_City" android:layout_width="fill_parent" android:layout_height="wrap_content"> </Spinner><!-- 定义一个下拉菜单--> </LinearLayout>
④ 定义一个下拉菜单 private Spinner mySpinner; /* 以findViewById() 取得对象*/⑤ 定义一个字符串数组和一个ArrayAdepter mySpinner = (Spinner) findViewById(R.id.spinner_City); private static final String[] countriesStr ={ " 北京市", " 上海市", " 天津市", " 重庆市" }; private ArrayAdapter<String> adapter; adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countriesStr);⑥ 给下拉菜单内容设置样式 /* myspinner_dropdown 为自定义下拉菜单样式定义在res/layout 目录下*/ adapter.setDropDownViewResource(R.layout.myspinner_dropdown);⑦ 给下拉菜单设置内容适配器 /* 将ArrayAdapter 添加Spinner 对象中*/ mySpinner.setAdapter(adapter);⑧ 给下拉菜单添加动画 /* 取得Animation 定义在res/anim 目录下*/ myAnimation = AnimationUtils.loadAnimation(this, R.anim.my_anim); /* 将mySpinner 运行Animation */ mySpinner.startAnimation(myAnimation);⑨ mainActivity.java 完整代码
package zyf.Ex_Ctrl_8; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; public class Ex_Ctrl_8 extends Activity { /** Called when the activity is first created. */ private static final String[] countriesStr ={ " 北京市", " 上海市", " 天津市", " 重庆市" }; private TextView myTextView; private Spinner mySpinner; private ArrayAdapter<String> adapter; Animation myAnimation; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 载入main.xml Layout */ setContentView(R.layout.main); /* 以findViewById() 取得对象*/ myTextView = (TextView) findViewById(R.id.TextView_Show); mySpinner = (Spinner) findViewById(R.id.spinner_City); /* 取得Animation 定义在res/anim 目录下*/ myAnimation = AnimationUtils.loadAnimation(this, R.anim.my_anim); adapter=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, countriesStr ); /* myspinner_dropdown 为自定义下拉菜单样式定义在res/layout 目录下*/ adapter.setDropDownViewResource(R.layout.myspinner_dropdown); /* 将ArrayAdapter 添加Spinner 对象中*/ mySpinner.setAdapter(adapter); /*下拉菜单弹出的内容选项被选中事件处理*/ mySpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){ public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) { /* 将所选mySpinner 的值带入myTextView 中*/ myTextView.setText("您选择的是:"+ countriesStr [arg2]); /* 将mySpinner 显示*/ arg0.setVisibility(View.VISIBLE); } public void onNothingSelected(AdapterView<?> arg0) { myTextView.setText("NONE"); } }); /*下拉菜单弹出的内容选项触屏事件处理*/ mySpinner.setOnTouchListener(new Spinner.OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { /* 将mySpinner 运行Animation */ v.startAnimation(myAnimation); /* 将mySpinner 隐藏*/ v.setVisibility(View.INVISIBLE); return false; } }); /*下拉菜单弹出的内容选项焦点改变事件处理*/ mySpinner.setOnFocusChangeListener(new Spinner.OnFocusChangeListener(){ public void onFocusChange(View v, boolean hasFocus) { } }); } }
动态添加╱删除的Spinner 菜单
ArrayList 与Widget 的依赖性
① 创建新工程② 修改mian.xml 布局,添加UI 元素
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/widget92" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" > <TextView android:id="@+id/TextView_Show_yourChoice" android:layout_width="190px" android:layout_height="wrap_content" android:text="TextView" android:textSize="25sp" android:layout_gravity="center_horizontal" > </TextView> <EditText android:id="@+id/EditView_Input" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textSize="18sp" > </EditText> <Button android:id="@+id/Button_ADD" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="添加" > </Button> <Button android:id="@+id/Button_DEL" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="删除" > </Button> <Spinner android:id="@+id/Spinner_Slecte" android:layout_width="fill_parent" android:layout_height="wrap_content" > </Spinner> </LinearLayout>
/*定义*/③ 定义创建一个List<T>private String[] cities;private List<String> cityList;/*初始化字符串数组*/cities = new String[] { "Android", "BlackBerry", "J2ME", "Symbian","Broncho", "LinuxMobile", "Palm", "WindwosMobile" };/*初始化List实例ArrayList的对象*/cityList = new ArrayList<String>();/*遍历,把字符串数组添加到ArrayList中*/for (int i = 0; i < cities.length; i++) { cityList.add(cities[i]);}④ 定义创建一个ArrayAdapter<String>private ArrayAdapter<String> arrayAdapter;/* 这里应该使用List<> ,如果使用String[]则会出错*//*初始化下拉菜单的内容适配器*/arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, cityList);/*设置下拉菜单显示内容的风格*/arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);⑤ 设置ArrayAdapter<String>在下拉菜单中的显示布局/*给下拉菜单对象添加内容适配器*/city_Spinner.setAdapter(arrayAdapter);⑦ 修改该mainActivity.java,实现动态添加和删除
package zyf.Ex_Ctrl_9ME; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; public class Ex_Ctrl_9ME extends Activity implements Button.OnClickListener, Spinner.OnItemSelectedListener { /** Called when the activity is first created. */ /*声明程序使用的对象*/ private TextView show_yourChoice_TextView; private EditText input_City_EditText; private Button Add_Button, Del_Button; private Spinner city_Spinner; private ArrayAdapter<String> arrayAdapter; private String[] cities; private String addString; private List<String> cityList; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /*设置主屏显示布局为main.xml*/ setContentView(R.layout.main); /*findViewByID()获取XML中的UI元素*/ show_yourChoice_TextView =(TextView) findViewById(R.id.TextView_Show_yourChoice ); input_City_EditText = (EditText) findViewById(R.id.EditView_Input); Add_Button = (Button) findViewById(R.id.Button_ADD); Del_Button = (Button) findViewById(R.id.Button_DEL); city_Spinner = (Spinner) findViewById(R.id.Spinner_Slecte); /*初始化字符串数组*/ cities = new String[] { "Android", "BlackBerry", "J2ME","Symbian","Broncho", "LinuxMobile","Palm", "WindwosMobile" }; /*初始化List实例ArrayList的对象*/ cityList = new ArrayList<String>(); /*遍历,把字符串数组添加到ArrayList中*/ for (int i = 0; i < cities.length; i++) { cityList.add(cities[i]); } /* 这里应该使用List<> ,如果使用String[]则会出错*/ /*初始化下拉菜单的内容适配器*/ arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, cityList); /*设置下拉菜单显示内容的风格*/ arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item ); /*给下拉菜单对象添加内容适配器*/ city_Spinner.setAdapter(arrayAdapter); /*默认启动时文本标题显示*/ show_yourChoice_TextView.setText(arrayAdapter.getItem(0)); /*默认启动时下拉菜单第一项被选中*/ city_Spinner.setSelection(0); /*为按钮添加点击事件监听器*/ Add_Button.setOnClickListener(this); Del_Button.setOnClickListener(this); /*为下拉菜单添加选项选中事件监听器*/ city_Spinner.setOnItemSelectedListener(this); } @Override public void onClick(View v) { switch (v.getId()) { /*区别按钮来进行不同动作*/ case R.id.Button_ADD: /*显示Toast提示*/ Toast.makeText(this, "添加", Toast.LENGTH_SHORT).show(); /*获得输入框中的将要添加的字符串*/ addString = input_City_EditText.getText().toString(); /*遍历,比较是否和下拉菜单中内容重复*/ for (int i = 0; i < arrayAdapter.getCount(); i++) { if (addString.equals(arrayAdapter.getItemId(i))) { return; /*重复了,则跳出*/ } } /*如果添加字符串不为""*/ if (!addString.equals("")) { /*添加进适配器中*/ arrayAdapter.add(addString); /*获取刚刚添加进的字符串位置*/ int post = arrayAdapter.getPosition(addString); /*设置刚刚添加进的下拉菜单内容被选中*/ city_Spinner.setSelection(post); /*清空输入框*/ input_City_EditText.setText(""); } break break; case R.id.Button_DEL: if (city_Spinner.getSelectedItem() != null) { /* 删除mySpinner 的值*/ arrayAdapter.remove(city_Spinner.getSelectedItem().toString()); /* 将myEditText 清空*/ input_City_EditText.setText(""); if (arrayAdapter.getCount() == 0) { /* 将myTextView 清空*/ Toast.makeText(this, "删完了", Toast.LENGTH_SHORT).show(); show_yourChoice_TextView.setText(""); } } break break; } } /*下拉菜单选项被选中事件处理*/ @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) { show_yourChoice_TextView.setText(arrayAdapter.getItem(arg2)); } /*未被选中事件处理*/ @Override public void onNothingSelected(AdapterView<?> arg0) { } /*添加Menu菜单进行退出操作*/ @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Exit"); return super.onCreateOptionsMenu(menu); } /*Menu菜单退出*/ @Override public boolean onOptionsItemSelected(MenuItem item) { finish(); return super.onOptionsItemSelected(item); } }
动态输入日期与时间
DatePicker 与TimePicker 应用
① 新建工程② 修改main.xml 布局,添加一个DatePicker、一个TimePicker、一个TextView③ DatePicker 的初始化与日期改变事件的处理
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <DatePicker android:id="@+id/my_DatePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="10px" android:layout_y="10px"> </DatePicker><!-- 日期设置器--> <TimePicker android:id="@+id/my_TimePicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="10px" android:layout_y="150px"> </TimePicker><!-- 事件设置器--> <TextView android:id="@+id/my_TextView" android:layout_width="228px" android:layout_height="29px" android:text="TextView" android:layout_x="10px" android:layout_y="300px"> </TextView> </AbsoluteLayout>
/* 定义程序用到的UI元素对象:日历设置器*/DatePicker my_datePicker;/* findViewById()从XML中获取UI元素对象*/my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker);④ TimePicker 的初始化与时间改变事件的处理⑤ 修改mainActivity.java,添加动态修改时间并显示效果/*为日历设置器添加点击事件监听器,处理设置日期事件*/my_datePicker.init(my_Year, my_Month, my_Day,new DatePicker.OnDateChangedListener(){ @Override public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {/*日期改变事件处理*/}});/* 定义程序用到的UI元素对象:时间设置器*/ TimePicker my_timePicker; /* findViewById()从XML中获取UI元素对象*/ my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker); /* 把时间设置成24小时制*/ my_timePicker.setIs24HourView(true); /*为时间设置器添加点击事件监听器,处理设置时间事件*/ my_timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener(){ @Override public void onTimeChanged(TimePicker view, int hourOfDay,int minute) { /*时间改变事件处理*/ } });
package zyf.Ex_Ctrl_15ME; /*导入要使用的包*/ import java.util.Calendar; import java.util.Locale; import android.app.Activity; import android.os.Bundle; import android.widget.DatePicker; import android.widget.TextView; import android.widget.TimePicker; public class Ex_Ctrl_15ME extends Activity { /** Called when the activity is first created. */ /* 定义时间变量:年、月、日、小时、分钟*/ int my_Year; int my_Month; int my_Day; int my_Hour; int my_Minute; /* 定义程序用到的UI元素对象:日历设置器、时间设置器、显示时间的TextView */ DatePicker my_datePicker; TimePicker my_timePicker; TextView showDate_Time; /* 定义日历对象,初始化时,用来获取当前时间*/ Calendar my_Calendar; @Override public void onCreate(Bundle savedInstanceState) { /* 从Calendar抽象基类获得实例对象,并设置成中国时区*/ my_Calendar = Calendar.getInstance(Locale.CHINA); /* 从日历对象中获取当前的:年、月、日、时、分*/ my_Year = my_Calendar.get(Calendar.YEAR); my_Month = my_Calendar.get(Calendar.MONTH); my_Day = my_Calendar.get(Calendar.DAY_OF_MONTH); my_Hour = my_Calendar.get(Calendar.HOUR_OF_DAY); my_Minute = my_Calendar.get(Calendar.MINUTE); super.onCreate(savedInstanceState); setContentView(R.layout.main); /* findViewById()从XML中获取UI元素对象*/ my_datePicker = (DatePicker) findViewById(R.id.my_DatePicker); my_timePicker = (TimePicker) findViewById(R.id.my_TimePicker); showDate_Time = (TextView) findViewById(R.id.my_TextView); /* 把时间设置成24小时制*/ my_timePicker.setIs24HourView(true); /* 显示时间*/ loadDate_Time(); /*为日历设置器添加点击事件监听器,处理设置日期事件*/ my_datePicker.init(my_Year, my_Month, my_Day,new DatePicker.OnDateChangedListener(){ @Override public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) { /*把设置改动后的日期赋值给我的日期对象*/ my_Year=year; my_Month=monthOfYear; my_Day=dayOfMonth; /* 动态显示修改后的日期*/ loadDate_Time(); } }); /*为时间设置器添加点击事件监听器,处理设置时间事件*/ my_timePicker.setOnTimeChangedListener(newTimePicker.OnTimeChangedListener(){ @Override public void onTimeChanged(TimePicker view, int hourOfDay,int minute) { /*把设置改动后的时间赋值给我的时间对象*/ my_Hour=hourOfDay; my_Minute=minute; /* 动态显示修改后的时间*/ loadDate_Time(); } }); } /* 设置显示日期时间的方法*/ private void loadDate_Time() { showDate_Time.setText(new StringBuffer() .append(my_Year).append("/") .append(FormatString(my_Month + 1)) .append("/").append(FormatString(my_Day)) .append(" ").append(FormatString(my_Hour)) .append(" : ").append(FormatString(my_Minute))); } /* 日期时间显示两位数的方法*/ private String FormatString(int x) { String s = Integer.toString(x); if (s.length() == 1) { s = "0" + s; } return s; } }
GridView宫格视图实践
BaseAdapter 与GridView
① 新建工程② 在res/drawable 目录下添加名称为a.png---p.png 的图片③ 修改main.xml 布局,添加一个GridView、一个ImageView④ GridView 的定义与实例化
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/widget0" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" > <GridView android:id="@+id/grid" android:layout_width="fill_parent" android:padding="30dip" android:columnWidth="52px" android:layout_height="210px" android:numColumns="5"> <!-- GridView设置为五列边距为30pid--> </GridView> <ImageView android:id="@+id/ImageView_Big" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_x="95px" android:layout_y="250px"> </ImageView> </AbsoluteLayout>
/*定义类对象*/ private GridView my_gridview; /*从xml中获取UI资源对象*/ my_gridview = (GridView) findViewById(R.id.grid); ⑤ GridView 的图像内容设置与ImageAdapter ⑥ 内部类ImageAdapter,实现了BaseAdapter ⑦ GridView 的图片Items 点击事件处理 /*新建一个自定义的ImageAdapter*/ myImageViewAdapter = new ImageAdapter(this);
/*为GridView对象设置一个ImageAdapter*/ my_gridview.setAdapter(myImageViewAdapter); private class myImageAdapter extends BaseAdapter{ @Override public int getCount() { return 0; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @ Override public View getView(int position, View convertView, ViewGroup parent) { return null; } }
/*为GridView添加图片Items点击事件监听器*/ my_gridview.setOnItemClickListener(this); @Override public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) { /*点击GridView中图片Items事件处理*/ }⑧ GridView 移动后选中图片Items 的事件处理⑨ 修改mainActivity.java 来实现图片点击和图片移动选中的效果 /*为GridView添加图片Items移动选中事件监听器*/ my_gridview.setOnItemSelectedListener(this); @Override public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2,long arg3) { /*GridView中的图片移动焦点选中时事件处理*/ } /*未选中GridView中的图片Items事件处理*/ @Override public void onNothingSelected(AdapterView<?> arg0) { }
package zyf.GridViewTest; /*导入要使用的包*/ import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class GridViewTest extends Activity implementsGridView.OnItemClickListener, GridView.OnItemSelectedListener { /** Called when the activity is first created. */ /*定义类对象*/ private GridView my_gridview; private ImageView big_imageView; private ImageAdapter myImageViewAdapter; /*内部类,实现一个图片适配器*/ public class ImageAdapter extends BaseAdapter { /*myContext为上下文*/ private Context myContext; /*GridView用来加载图片的ImageView*/ private ImageView the_imageView; // 这是图片资源ID的数组 private Integer[] mImageIds = { R.drawable.a, R.drawable.b,R.drawable.c, R.drawable.d, R.drawable.e, R.drawable.f,R.drawable.g, R.drawable.h, R.drawable.i, R.drawable.j,R.drawable.k, R.drawable.l, R.drawable.m, R.drawable.n,R.drawable.o, R.drawable.p }; /*构造方法*/ public ImageAdapter(Context myContext) { // TODO Auto-generated constructor stub this.myContext = myContext; /*传入一个Context,本例中传入的是GridViewTest */ } /*返回资源ID数组长度*/ @Override public int getCount() { return mImageIds.length; } /*得到Item*/ @Override public Object getItem(int position) { return position; } /*获取Items的ID*/ @Override public long getItemId(int position) { return position; } /*获取要显示的View对象*/ @Override public View getView(int position,View convertView, ViewGroup parent) { /*创建一个ImageView*/ the_imageView = new ImageView(myContext); // 设置图像源于资源ID。 the_imageView.setImageResource(mImageIds[position]); /*使ImageView与边界适应*/ the_imageView.setAdjustViewBounds(true); /*设置背景图片的风格*/ the_imageView.setBackgroundResource(android.R.drawable.picture_frame); /*返回带有多个图片ID的ImageView*/ return the_imageView; } /*自定义获取对应位置的图片ID*/ public Integer getcheckedImageIDPostion(int theindex) { return mImageIds[theindex]; } } @ Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /*设置主屏布局*/ setContentView(R.layout.main); /*从xml中获取UI资源对象*/ my_gridview = (GridView) findViewById(R.id.grid); big_imageView = (ImageView) findViewById(R.id.ImageView_Big); /*新建一个自定义的ImageAdapter*/ myImageViewAdapter = new ImageAdapter(this); /*为GridView对象设置一个ImageAdapter*/ my_gridview.setAdapter(myImageViewAdapter); /*为GridView添加图片Items点击事件监听器*/ my_gridview.setOnItemClickListener(this); /*为GridView添加图片Items移动选中事件监听器*/ my_gridview.setOnItemSelectedListener(this); } @ Override public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) { /*点击GridView中图片Items后显示一个AlterDialog提示框*/ new AlertDialog.Builder(this).setTitle("图片浏览") /*获得对应的图片并显示*/ .setIcon(myImageViewAdapter.getcheckedImageIDPostion(arg2)) /*添加一个按钮*/ .setPositiveButton("返回", new OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { } }).show(); } @ Override public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2,long arg3) { /*GridView中的图片移动焦点选中时, *下面的大图ImageView显示相应的大图片*/ big_imageView.setImageResource(myImageViewAdapter.getcheckedImageIDPostion(arg2)); } /*未选中GridView中的图片Items事件处理*/ @Override public void onNothingSelected(AdapterView<?> arg0) { } }
0 0
- UI基础-网络编程
- 基础UI编程
- 基础UI编程
- UI基础编程
- Android基础UI编程(1)
- Andriod编程基础(三):Android UI 基本常用组件实例
- UI设计编程:基础视图、程序启动流程
- UI基础
- UI基础
- UI基础
- UI基础
- UI基础
- UI基础
- UI基础
- android学习----基础UI编程(二)之TextView 和 EditView(转)
- 【jQuery基础编程】jQuery-UI实现折叠面板里的控件拖曳
- android基础UI组件
- Android UI 绘图基础
- Zynq启动CPU1的步骤(寄存器A9_CPU_RST_CTRLS)
- [博弈] BZOJ 2927 [Poi1999]多边形之战 Polygons
- Netty日志怎么用
- jquery 获取select选中的值
- Android 6.0中"Unable to find optional library: org.apache.http.legacy"错误解决
- 基础UI编程
- java 基本数据类型总结
- 7.1 Swift枚举基本语法
- iostat 命令详解
- 剑指Offer---面试题15:链表中的倒数第k个节点
- 第一章 数据库基础
- python Mysql for 2.7
- 转换流InputStreamReader、OutputStreamWriter
- mysql+tomcat+jsp增删改查(三)