一个安卓小应用的开发

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

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);
}

}
}

时间: 2024-09-30 15:13:03

一个安卓小应用的开发的相关文章

开发了一个安卓小软件“CSV联系人导入导出工具”,欢迎测试

开发了一个安卓小软件“CSV联系人导入导出工具”,欢迎测试.本软件可以帮你快速备份和恢复联系人,不用担心号码遗失,软件操作简单,使用方便. 下载地址:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=419036&extra=page%3D1 原文地址:https://www.cnblogs.com/ybmj/p/12354353.html

一个安卓小程序-云播放(开源)

git 地址  https://github.com/wangxiaoli/MyYunbo 实现原理 用户输入播放链接 客户端进行链接处理,比如FTP,HTTP进行中文编码,转成thunder格式.Ed2k链接进行文件名提取转换和hash码提取等. 客户端向服务器查询播放链接的云端地址. 客户端获取到云端播放地址后进行选择处理,选择解码器进行播放. 客户端进行记录播放进度,以便恢复播放. 客户端进行云端地址的hash存储.减轻服务器压力. 项目依赖 AndBase v1.6下载地址 http:/

第一个mpvue小程序开发总结

前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最近这个项目终于上线了,我也来试着总结回顾一波吧. 关于框架的选择 我刚来现在的公司时,我就了解过有一个小程序框架叫mpvue被美团开源了,有过一个大致的了解.来了公司之后了解到我们公司已经有了一套自己的小程序技术栈那就是基于wepy的,而不是原生小程序,毕竟我们要开发的小程序不是简单的几个页面,而且

小程序Kbone开发教程基础篇02-使用kbone-ui实现一个按钮

前言 本节我们学习使用kbone-ui框架的使用,kbone-ui是微信推出的支持小程序和Vue框架的多端UI库,我们首先完成Button的使用. 一.基础知识 1.kbone-ui简介 kbone-ui 是一个能同时支持 小程序(kbone) 和 vue 框架开发的多端 UI 库.kbone 框架是用来对齐 Web 和 小程序多端的一个解决方案.在使用时,还是需要注意 小程序和 Web 之间的开发差异性,为了磨平这块内容,提供 kbone-ui 组件库.通过,kbone-ui 来磨平大部分的实

吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个超小按钮

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"

安卓智能聊天机器人开发(一)

这个聊天机器人有点像前段时间很火的一个安卓应用——小黄鸡 应用的实现其实很简单,网上有许多关于智能机器人聊天的接口,我们只需要去调用对应的接口,遵守它的API开发规范,就可以获取到我们想要的信息 这里我使用的接口是——图灵机器人(http://www.tuling123.com/openapi/) 这个接口给我们返回的是Json字符串,我们只需要对它进行Json字符串解析,就可以实现这个应用. 开发步骤: 首先我们需要到这个图灵机器人的官网去注册一个账号,他会给我们一个唯一Key,通过这个Key

小程序商城开发小程序系统代码编程分析

小程序商城开发小程序系统代码编程分析:151.1222.4001(微/电)微信小程序开发,小程序商城开发,小程序模式开发,小程序源码开发,小程序软件开发,小程序应用开发,小程序微商城搭建,小程序分销返利系统开发,小程序购物商城开发. 微信小程序1月9日发布以来,其实就是一个基于微信运行一个程序,腾讯未来就会把微信作为一个移动端OS,在微信基础上运营一个企业的小程序,这样方便用户使用程序,不需要下载和安装,这样方便了用户使用,从而我个人认为会对一些功能比较小的APP造成很大的冲击,但是对功能相对比

Linux下搭建Java环境变量并实现第一个Java小程序

1.首先,我们打开虚拟机里面的Linux操作系统,然后点击下图菜单下的虚拟机选项: 在点击虚拟机下的设置菜单,如下图所示: 这里我已经添加进去我所需要的文件夹了,我放在本机E盘下的as文件夹里面到底放了什么呢? 上图这两个压缩文件,一个是android studio的压缩包,上年发布出来的,一直没用它,今天本来想在windows下安装这个软件,发现所需要的jdk是1.7,而我在windows下的jdk版本为1.6,所以打算在Linux操作系统下安装jdk1.7,并安装andoid studio工

【安卓笔记】快速开发设置界面-----PreferenceActivity

通常app都会有一个设置界面,如下: 通常做法是自己定义布局,然后在代码里面添加响应函数,并将结果保存到Sharedpreferences中. android给我们提供了PreferenceActivity来简化开发设置界面. 你只需这样做: 1.创建一个类继承PreferenceActivity,并导入设置界面布局: package com.example.preferenceactivitydemo1; import android.os.Bundle; import android.pre