当前位置: 编程技术>移动开发
本页文章导读:
▪蓝牙的施用 蓝牙的使用
工程结构图:[img][/img]MainActivitypackage com.zzl.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import androi.........
▪ popupWindow的应用 popupWindow的使用
1.定义一个Popupwindow:
private PopupWindow popWinOfKeyboard;
private LayoutInflater inflater ;
2.onCreate()
inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate.........
▪ List报表 List表格
线上效果图:[img][/img]工程结构图:[img][/img]布局文件:list_header.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linear.........
[1]蓝牙的施用
来源: 互联网 发布时间: 2014-02-18
蓝牙的使用
工程结构图:
[img]
[/img]
MainActivity
BTConnectActivity
WriteActivity
记得添加权限:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
工程结构图:
[img]
[/img]
MainActivity
package com.zzl.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(),BTConnectActivity.class);
startActivity(intent);
finish();
}
});
}
}BTConnectActivity
package com.zzl.test;
/*************************************************************/
/* Project Shmimn
* Mobile Health-care Device
* Yuhua Chen
* 2011-4-24 16:35:21
*/
/*************************************************************/
import java.io.IOException;
import java.util.UUID;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.content.Context;
import android.content.BroadcastReceiver;
import android.content.IntentFilter;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import android.util.Log;
import android.view.View;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
public class BTConnectActivity extends Activity {
// private static final String TAG = "BTConnectActivity";
/** Called when the activity is first created. */
public static final int REQUEST_ENABLE_BT = 8807;
public BroadcastReceiver mBTReceiver;
public static BluetoothSocket mBTSocket;
public BluetoothAdapter mBTAdapter;
public BluetoothDevice mBTDevice;
private ArrayAdapter<String> adtDvcs;
private List<String> lstDvcsStr = new ArrayList<String>();
private ListView lvDevicesList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.btconnect);
// 初始化 BluetoothAdapter
mBTAdapter = BluetoothAdapter.getDefaultAdapter(); // c
if (mBTAdapter == null) {
Toast.makeText(BTConnectActivity.this, "没有支持蓝牙的设备! ",
Toast.LENGTH_SHORT).show();
this.finish();
}
if (!mBTAdapter.isEnabled()) {
// Open a new dialog to ask user whether wanna open BT
Toast.makeText(BTConnectActivity.this, "请打开手机蓝牙后再重试! ",
Toast.LENGTH_SHORT).show();
this.finish();
Intent enabler = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enabler, REQUEST_ENABLE_BT);
}
// 开启 BroadCast Receiver
mBTReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String act = intent.getAction();
// To see whether the action is that already found devices
if (act.equals(BluetoothDevice.ACTION_FOUND)) {
// 如果发现一个设备,得到设备的对象
BluetoothDevice tmpDvc = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Put the name & address into a string
String tmpDvcStr = tmpDvc.getName() + "|"
+ tmpDvc.getAddress();
if (lstDvcsStr.indexOf(tmpDvcStr) == -1) {
// Avoid duplicate add devices
lstDvcsStr.add(tmpDvcStr);
adtDvcs.notifyDataSetChanged();
Toast.makeText(BTConnectActivity.this, "发现一个新设备",
Toast.LENGTH_SHORT).show();
}
}
if (act.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
Toast.makeText(BTConnectActivity.this, "搜索完成!",
Toast.LENGTH_SHORT).show();
}
if (act.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
Toast.makeText(BTConnectActivity.this, "开始搜索设备",
Toast.LENGTH_SHORT).show();
}
}
};
// 注册 broadcastReceiver
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mBTReceiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
registerReceiver(mBTReceiver, filter);
filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
registerReceiver(mBTReceiver, filter);
lvDevicesList = (ListView) findViewById(R.id.lvDevicesList);
adtDvcs = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lstDvcsStr);
lvDevicesList.setAdapter(adtDvcs);
if (mBTAdapter.isDiscovering()) {
Toast.makeText(BTConnectActivity.this, "正在搜索......",
Toast.LENGTH_SHORT).show();
} else {
lstDvcsStr.clear();
adtDvcs.notifyDataSetChanged();
mBTDevice = null;
mBTAdapter.startDiscovery();
}
// 在设备列表中创建单击事件
lvDevicesList
.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
if (mBTAdapter == null)
Toast.makeText(BTConnectActivity.this, "没有搜索到蓝牙设备",
Toast.LENGTH_SHORT).show();
else {
// 停止搜索
mBTAdapter.cancelDiscovery();
// 得到设备的地址
String str = lstDvcsStr.get(arg2);
String[] dvcValues = str.split("\\|");
String dvcAddr = dvcValues[1];
UUID dvcUUID = UUID
.fromString("00001101-0000-1000-8000-00805F9B34FB");
mBTDevice = mBTAdapter.getRemoteDevice(dvcAddr);
// 连接设备
try {
// 根据UUID创建并返回一个BluetoothSocket
mBTSocket = mBTDevice
.createRfcommSocketToServiceRecord(dvcUUID);
mBTSocket.connect();
Intent intent = new Intent(getApplicationContext(),WriteActivity.class);
startActivity(intent);
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
}
public void onActivityResult(int RequestCode, int ResultCode, Intent data) {
Log.i("BTConnectActivity", "RequestCode is " + RequestCode
+ ", ResultCode is " + ResultCode);
switch (RequestCode) {
case REQUEST_ENABLE_BT:
if (ResultCode == RESULT_OK) {
Toast.makeText(this.getApplicationContext(), "蓝牙已连接!",
Toast.LENGTH_SHORT).show();
} else if (ResultCode == RESULT_CANCELED) {
Toast.makeText(this.getApplicationContext(), "蓝牙连接被取消!",
Toast.LENGTH_SHORT).show();
}
break;
}
}
@Override
protected void onDestroy() {
try {
mBTSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
this.unregisterReceiver(mBTReceiver);
super.onDestroy();
}
}WriteActivity
package com.zzl.test;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class WriteActivity extends Activity {
private TextView tv;
private BTReadThread mReadThread = new BTReadThread(50);
private boolean enRead = false;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
tv.setText(msg.obj.toString());
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.write);
tv = (TextView) findViewById(R.id.tv);
btint();
}
/**
* 开启读取蓝牙数据的线程
*/
private void btint() {
try {
if (BTConnectActivity.mBTSocket.getInputStream() != null) {
enRead = true;
mReadThread.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/***
* 蓝牙操作
*/
class BTReadThread extends Thread {
private int wait = 50;// Time to wait
public BTReadThread(int wait) {
this.wait = wait;
}
public void stopThread(){
enRead = false;
}
public void run() {
while (enRead) {
try {
if (BTConnectActivity.mBTSocket.getInputStream() != null) {
byte[] tmp = new byte[1024];
int len = BTConnectActivity.mBTSocket.getInputStream().read(tmp, 0, 1024); // 卡
if (len > 0) {
String res = "";
for (int i = 0; i < tmp.length; i++) {
String hex = Integer.toHexString(tmp[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
res += hex.toUpperCase();
}
String strDES = res.substring(0, 16);
Message message = handler.obtainMessage();
message.what = 0;
message.obj = strDES;
handler.sendMessage(message);
}
}
Thread.sleep(wait);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}记得添加权限:
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH" />
[2] popupWindow的应用
来源: 互联网 发布时间: 2014-02-18
popupWindow的使用
1.定义一个Popupwindow:
private PopupWindow popWinOfKeyboard; private LayoutInflater inflater ;
2.onCreate()
inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.keyboard, null);
popWinOfKeyboard = new PopupWindow(layout, 480, 350);//设置popupwindow的宽高
popWinOfKeyboard.setAnimationStyle(R.style.PopupAnimation);
popWinOfKeyboard.setOutsideTouchable(true);//设置点击PopopWindow的其他位置的时候关闭,无效!!
View myPopView = popWinOfKeyboard.getContentView();//这个很重要!没有这个就找不到,就会nullpoint
dialNum0 = (ImageButton)myPopView.findViewById(R.id.dial_num_0);
dialNum1 = (ImageButton)myPopView.findViewById(R.id.dial_num_1);
dialNum2 = (ImageButton)myPopView.findViewById(R.id.dial_num_2);
//................
dialNum0.setOnClickListener(this);
dialNum1.setOnClickListener(this);
dialNum2.setOnClickListener(this);
//..............
3.显示
@Override
public void onAttachedToWindow()
{
//放在这里面比较给力啊
super.onAttachedToWindow();
popWinOfKeyboard.showAtLocation(tvTitleText, Gravity.CENTER, 0, 145);//这里的布局可能有问题!!!
}
4.关闭
popWinOfKeyboard.dismiss();
[3] List报表
来源: 互联网 发布时间: 2014-02-18
List表格
线上效果图:
[img]
[/img]
工程结构图:
[img]
[/img]
布局文件:
list_header.xml
list_items.xml
notwriteinfo.xml
color.xml
style.xml
MainActivity
线上效果图:
[img]
[/img]
工程结构图:
[img]
[/img]
布局文件:
list_header.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="30dip" >
<TableLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="5" >
<TableRow android:id="@+id/list_header_row" >
<!-- 小竖线 -->
<View />
<TextView
android:id="@+id/list_header_gyh"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/color_black"
android:padding="2dip"
android:text="钢印号" />
<!-- 小竖线 -->
<View />
<TextView
android:id="@+id/list_header_hm"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/color_black"
android:padding="2dip"
android:text="户名" />
<!-- 小竖线 -->
<View />
<TextView
android:id="@+id/list_header_wz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textColor="@color/color_black"
android:padding="2dip"
android:text="位置" />
<!-- 小竖线 -->
<View />
</TableRow>
</TableLayout>
</LinearLayout>list_items.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TableLayout
android:id="@+id/stock_list_item_table_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="5" >
<TableRow android:id="@+id/stock_list_row" >
<View />
<TextView
android:id="@+id/item_tv_gyh"
android:layout_width="80dip"
android:layout_height="wrap_content"
android:text="TextView" />
<View />
<TextView
android:layout_height="wrap_content"
android:layout_gravity="center"
android:id="@+id/item_tv_hm"
android:layout_width="80dip"
android:text="TextView" />
<View />
<TextView
android:layout_width="160dip"
android:layout_height="wrap_content"
android:id="@+id/item_tv_wz"
android:text="TextView" />
<View />
</TableRow>
</TableLayout>
</LinearLayout>notwriteinfo.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- 未抄表数据信息 -->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<!-- 屏幕宽度的横线 -->
<View />
<!-- 添加表头 -->
<include layout="@layout/list_header"/>
<!-- 屏幕宽度的横线 -->
<View />
<ListView
android:id="@+id/notwriteinfo_lv_info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollingCache="true"
android:fastScrollEnabled="true"
android:focusable="true"
android:divider="@color/color_dark_grey"
android:dividerHeight="1dip" />
<!-- 屏幕宽度的横线 -->
<View />
</LinearLayout>
color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="color_dark_grey">#808080</color>
<color name="color_black">#000000</color>
<color name="color_green">#00FF00</color>
<color name="color_red">#FF0000</color>
<color name="color_white">#FFFFFF</color>
</resources>
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 正文区背景色-->
<style name="bgColor" >
<item name="android:background">#ffffff</item>
</style>
<style name="StyContent">
<item name="android:textSize">18px</item>
<item name="android:textColor">#000000</item>
</style>
<style name="StyTitle">
<item name="android:textSize">24dip</item>
<item name="android:textColor">#000000</item>
</style>
<style name="StyButton">
<item name="android:textSize">24dip</item>
<item name="android:textColor">#303030</item>
</style>
<!-- Define the list items style begin -->
<style name="list_item_seperator_layout">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">1dip</item>
<item name="android:background">@color/color_dark_grey</item>
</style>
<style name="list_item_cell_seperator_layout">
<item name="android:layout_width">1dip</item>
<item name="android:layout_height">40dip</item>
<item name="android:background">@color/color_dark_grey</item>
</style>
<!-- Define the list items style end -->
</resources>
MainActivity
package com.zzl.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
List<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notwriteinfo);
insertInfo();
//取得ListView对象
ListView listview = (ListView) findViewById(R.id.notwriteinfo_lv_info);
//给Listview添加元素
listview.setAdapter(new MyAdapter(getApplicationContext(),list));
//设置Listview滑动时背景不变黑
listview.setCacheColorHint(Color.TRANSPARENT);
}
//模拟添加数据
public void insertInfo(){
for(int i=0;i<20;i++){
HashMap<String, String> map = new HashMap<String,String>();
map.put("number", "888888");
map.put("name", "爆菊王");
map.put("address", "中国河北衡水桃城");
list.add(map);
}
}
/**
* @author lyd
*/
public class MyAdapter extends BaseAdapter {
private LayoutInflater mInflater;
//数据
private List<HashMap<String,String>> list = null;
/* 构造函数 */
public MyAdapter(Context context,List<HashMap<String, String>> list2){
mInflater = LayoutInflater.from(context);
this.list = list2;
}
/* 列表项个数 */
public int getCount() {
return list.size();
}
/* 获得列表指定的项 */
public Object getItem(int position) {
return null;
}
/* 获得列表指定项的Id */
public long getItemId(int position) {
return 0;
}
/* 设置显示格式 */
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {// 当convertView 为null的时候初始化convertView
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.list_items, null);
holder.gyh = (TextView) convertView.findViewById(R.id.item_tv_gyh);
holder.hm = (TextView) convertView.findViewById(R.id.item_tv_hm);
holder.wz = (TextView) convertView.findViewById(R.id.item_tv_wz);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.gyh.setText(list.get(position).get("number"));
holder.hm.setText(list.get(position).get("name"));
holder.wz.setText(list.get(position).get("address"));
holder.gyh.setTextColor(Color.BLACK);
holder.hm.setTextColor(Color.BLACK);
holder.wz.setTextColor(Color.BLACK);
return convertView;
}
/* 自定义实体类,属性与List项对应 */
public final class ViewHolder {
private int id;
public TextView gyh;// 钢印号
public TextView hm;// 户名
public TextView wz;// 位置
public TextView dj;// 电价
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public TextView getGyh() {
return gyh;
}
public void setGyh(TextView gyh) {
this.gyh = gyh;
}
public TextView getHm() {
return hm;
}
public void setHm(TextView hm) {
this.hm = hm;
}
public TextView getWz() {
return wz;
}
public void setWz(TextView wz) {
this.wz = wz;
}
public TextView getDj() {
return dj;
}
public void setDj(TextView dj) {
this.dj = dj;
}
}
}
}
最新技术文章: