zoukankan      html  css  js  c++  java
  • 一个安卓小应用的开发

    开发一个特别简单的小安卓应用,主要做了这些事情:

    1、配置activity_main.xml文件

        放置一个TextView和一个ListView,TextView用于显示文本,ListView设置id问listview0用于放置多个Item;

    Item的position(位置)和Id(第几行)都是从0开始(onItemClick(AdapterView<?> arg0, View view,int position, long id) )

    2、新建listview0.xml文件

       放置一个ImageView,用于显示图片。此文件布局即为上面ListView中一个Item的布局。

    3、为ListView配置数据源

       由于listview0.xml里面只有一个ImageView,所以数据设置为以下方法:

    private List<Map<String, Object>> getData() {

    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    Map<String, Object> map = null;
    int imgs[] = new int[] { R.drawable.buyno, R.drawable.quno };
    for (int i = 0; i < imgs.length; i++) {
    map = new HashMap<String, Object>();
    map.put("imageview", imgs[i]);
    list.add(map);
    }
    return list;
    }

    适配器将数据配置到ListView中

    SimpleAdapter adapter = new SimpleAdapter(this, getData(),
    R.layout.listview01, new String[] { "imageview" },
    new int[] { R.id.imageview });
    listView.setAdapter(adapter);

    4. ListView中Item点击事件:

      传递Item的Id给下一个Avtivity用启动,以确保点击不同Item响应不同事件。

    listView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View imageView,
    int position, long id) {
    Intent intent = new Intent();
    intent.putExtra("position", position + "");
    intent.setClass(MainActivity.this, ChoiceActivity.class);
    startActivity(intent);
    }
    });

    5、配置菜单:(菜单开发1)

    在menu文件夹下配置main.xml中的item并设置Id,用于点击Item时的区分。

    6、菜单点击事件:

    根据Item的ID响应不同事件。

    public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.exit0) {
    //退出
    MainActivity.this.finish();
    return true;
    }
    return super.onOptionsItemSelected(item);
    }

    7、配置另一个Activity的布局文件choice.xml 

    放置一个ImageView和两个按钮并居中

    <?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" >

    <ImageView
    android:id="@+id/imageview2"
    android:src="@drawable/think"
    android:layout_width="fill_parent"
    android:layout_height="300dp"
    android:contentDescription="@string/think"
    android:layout_gravity="center"
    />

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal" >

    <Button
    android:id="@+id/choiceButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/chose"
    android:layout_gravity="center_horizontal" />

    <Button
    android:id="@+id/exitbutton"
    android:text="@string/back"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

    </LinearLayout>

    </LinearLayout>

    8、启动另一个Activity时获取数据

    Intent intent = this.getIntent();
    position = intent.getStringExtra("position");

    9、根据不同的Item点击事件来设置不同的图片(根据posotion来判断)

    //填充图片
    private int[] getImgs() {
    int imgs[] = new int[2];
    if("0".equals(position)){
    imgs[0] = R.drawable.buy;
    imgs[1] = R.drawable.nobuy;
    }else if("1".endsWith(position)){
    imgs[0] = R.drawable.go;
    imgs[1] = R.drawable.nogo;
    }
    return imgs;
    }

    10、ImageVIew和Buttond的点击事件

    点击一次随机获取图片

    //转换图片
    private Drawable changeImg(int[] imgs) {
    Drawable drawable;
    int num = (int)(Math.random()*3);
    if(num>=0&&num<1){
    drawable = getResources().getDrawable(imgs[0]);
    }else if(num>=1&&num<2){
    drawable = getResources().getDrawable(R.drawable.think);
    }else{
    drawable = getResources().getDrawable(imgs[1]);
    }
    return drawable;
    }

    主干:

    Drawable drawable = null ;
    int[] imgs = getImgs();
    drawable = changeImg(imgs);
    imageView.setImageDrawable(drawable);

    10、添加菜单并设置点击事件(菜单开发2)

    copy别人高质量代码如下

    //创建菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

    /*
    *
    * add()方法的四个参数,依次是:
    *
    * 1、组别,如果不分组的话就写Menu.NONE,
    *
    * 2、Id,这个很重要,Android根据这个Id来确定不同的菜单
    *
    * 3、顺序,那个菜单现在在前面由这个参数的大小决定
    *
    * 4、文本,菜单的显示文本
    */

    menu.add(Menu.NONE, Menu.FIRST + 1, 5, "有待开发").setIcon(

    android.R.drawable.ic_menu_delete);

    // setIcon()方法为菜单设置图标,这里使用的是系统自带的图标,同学们留意一下,以

    // android.R开头的资源是系统提供的,我们自己提供的资源是以R开头的

    menu.add(Menu.NONE, Menu.FIRST + 2, 2, "有待开发").setIcon(

    android.R.drawable.ic_menu_edit);

    menu.add(Menu.NONE, Menu.FIRST + 3, 6, "退出").setIcon(

    android.R.drawable.ic_menu_help);

    menu.add(Menu.NONE, Menu.FIRST + 4, 1, "有待开发").setIcon(

    android.R.drawable.ic_menu_add);

    menu.add(Menu.NONE, Menu.FIRST + 5, 4, "有待开发").setIcon(

    android.R.drawable.ic_menu_info_details);

    menu.add(Menu.NONE, Menu.FIRST + 6, 3, "有待开发").setIcon(

    android.R.drawable.ic_menu_send);

    return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

    case Menu.FIRST + 1:

    Toast.makeText(this, "有待开发", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 2:

    Toast.makeText(this, "有待开发", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 3:

    ChoiceActivity.this.finish();
    break;

    case Menu.FIRST + 4:

    Toast.makeText(this, "有待开发", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 5:

    Toast.makeText(this, "有待开发", Toast.LENGTH_LONG).show();

    break;

    case Menu.FIRST + 6:

    Toast.makeText(this, "有待开发", Toast.LENGTH_LONG).show();

    break;

    }
    return true;
    }

    番外:添加摇一摇换图片功能:

    首先需实现接口SensorEventListener

    1、声明传感器管理和振动器

    //传感器管理类
    private SensorManager sensorManager;
    //振动器
    private Vibrator vibrator;

    2、获取系统服务

    在OnCreate函数中

    //传感器
    sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    //震动
    vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);

    3、注册监听

    重载OnResume函数

    //注册监听
    sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
    SensorManager.SENSOR_DELAY_NORMAL);

    4、解除监听

    重载OnPause函数

    sensorManager.unregisterListener(this);

    5、摇一摇响应事件

    粘贴别人高质量代码

    @Override
    public void onSensorChanged(SensorEvent event) {

    int sensorType = event.sensor.getType();
    //values[0]:X轴,values[1]:Y轴,values[2]:Z轴
    float[] values = event.values;
    if (sensorType == Sensor.TYPE_ACCELEROMETER)
    {
    if ((Math.abs(values[0]) > 17 || Math.abs(values[1]) > 17 || Math
    .abs(values[2]) > 17))
    {

    /*主要响应事件*/
    Drawable drawable = null ;
    int[] imgs = getImgs();
    drawable = changeImg(imgs);
    imageView.setImageDrawable(drawable);

    /*响应事件结束*/
    //摇动手机后,再伴随震动提示~~
    vibrator.vibrate(500);
    }

    }
    }

  • 相关阅读:
    java_hibernate 框架4
    java_hibernate 框架3
    java 基础 动态代理
    java_hibernate 框架2
    nginx配置反向代理实现负载均衡 小记
    mysql报错2059
    docker安装php容器小记
    docker安装nginx容器小记
    linux php添加pdo_mysql扩展
    linux php添加openssl扩展
  • 原文地址:https://www.cnblogs.com/liangblog/p/4026779.html
Copyright © 2011-2022 走看看