基础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
原创粉丝点击