mainActivity如下:
package c.c;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;
public class MainActivity extends Activity {
private TextSwitcher mIextSwitcher;
private String texts [];
private int textIndex=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
}
private void init(){
texts=new String[]{"空山新雨后","天气晚来秋","明月松间照","清泉石上流"};
mIextSwitcher=(TextSwitcher) findViewById(R.id.textSwitcher);
//设置用于显示文字的TextView
mIextSwitcher.setFactory(new ViewFactory() {
public View makeView() {
TextView textView=new TextView(MainActivity.this);
textView.setTextSize(30);
return textView;
}
});
//处理点击事件
mIextSwitcher.setOnClickListener(new ClickListenerImpl());
//设置文字进入和退出动画
mIextSwitcher.setInAnimation
(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.slide_in_left));
mIextSwitcher.setOutAnimation
(AnimationUtils.loadAnimation(MainActivity.this, android.R.anim.slide_in_left));
//设置初始时显示的文字
mIextSwitcher.setText(texts[textIndex]);
}
private class ClickListenerImpl implements OnClickListener {
public void onClick(View v) {
textIndex++;
if (textIndex == texts.length) {
textIndex = 0;
}
mIextSwitcher.setText(texts[textIndex]);
}
}
}
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextSwitcher
android:id="@+id/textSwitcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
</RelativeLayout>
哈希表算法实现
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.
环境:
主机:WINXP
开发环境:MINGW
说明:
本程序建立的哈希表示意图:
哈希函数为对哈希表长取余
源代码:
/*********************************************************************
* 哈希表算法实现
* (c)copyright 2013,jdh
* All Right Reserved
*文件名:main.c
*程序员:jdh
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
/*********************************************************************
* 宏定义
**********************************************************************/
/*********************************************************************
* 数据类型重定义
**********************************************************************/
#define uint8_t unsigned char
#define uint16_t unsigned short
#define uint32_t unsigned long
/*********************************************************************
* 哈希表长度
**********************************************************************/
#define HASH_TABLE_LEN 128
/*********************************************************************
* 数据结构
**********************************************************************/
//链表节点
typedef struct _Link_Node
{
uint16_t id;
uint16_t data;
struct _Link_Node *next;
}Link_Node,*Link_Node_Ptr;
//哈希表头
typedef struct _Hash_Header
{
struct _Link_Node *next;
}Hash_Header,*Hash_Header_Ptr;
/*********************************************************************
* 全局变量
**********************************************************************/
//哈希表
Hash_Header_Ptr Hash_Table[HASH_TABLE_LEN];
/*********************************************************************
* 函数
**********************************************************************/
/*********************************************************************
* 哈希表函数
*说明:
*1.用哈希函数生成id对应的哈希表中的位置
输入:id
返回:位置
**********************************************************************/
uint8_t hash_func(uint16_t id)
{
uint8_t pos = 0;
pos = id % HASH_TABLE_LEN;
return pos;
}
/*********************************************************************
* 初始化节点
*返回:结点指针
**********************************************************************/
Link_Node_Ptr init_link_node(void)
{
Link_Node_Ptr node;
//申请节点
node = (Link_Node_Ptr) malloc(sizeof(Link_Node));
//初始化长度为0
node->next = NULL;
return node;
}
/*********************************************************************
* 初始化哈希表头结点
*返回哈希表头结点指针
**********************************************************************/
Hash_Header_Ptr init_hash_header_node(void)
{
Hash_Header_Ptr node;
//申请节点
node = (Hash_Header_Ptr) malloc(sizeof(Hash_Header));
//初始化长度为0
node->next = NULL;
return node;
}
/*********************************************************************
* 哈希表初始化
*说明:
*1.初始化哈希表Hash_Table
*2.哈希表长度最大不能超过256
**********************************************************************/
void init_hash_table(void)
{
uint8_t i = 0;
for (i = 0;i < HASH_TABLE_LEN;i++)
{
Hash_Table[i] = init_hash_header_node();
Hash_Table[i]->next = NULL;
}
}
/*********************************************************************
* 在哈希表增加节点
*说明:
*1.在哈希表的某个链表末增加数据
输入:new_node:新节点
**********************************************************************/
void append_link_node(Link_Node_Ptr new_node)
{
Link_Node_Ptr node;
uint8_t pos = 0;
//用哈希函数获得位置
pos = hash_func(new_node->id);
//判断是否为空链表
if (Hash_Table[pos]->next == NULL)
{
//空链表
Hash_Table[pos]->next = new_node;
}
else
{
//不是空链表
//获取根节点
node = Hash_Table[pos]->next;
//遍历
while (node != NULL && node->next != NULL)
{
node = node->next;
}
//插入
node->next = new_node;
}
}
/*********************************************************************
* 在哈希表查询节点
*说明:
*1.知道在哈希表某处的单链表中,并开始遍历.
*2.返回的是查询节点的前一个节点指针.这么做是为了做删除操作.
输入:pos:哈希表数组位置,从0开始计数
id:所需要查询节点的id
root:如果是根节点,则*root = 1,否则为0
返回:所需查询的节点的前一个节点指针,如果是根节点则返回根节点,失败返回0
**********************************************************************/
Link_Node_Ptr search_link_node(uint16_t id,uint8_t *root)
{
Link_Node_Ptr node;
uint8_t pos = 0;
//用哈希函数获得位置
pos = hash_func(id);
//获取根节点
node = Hash_Table[pos]->next;
//判断单链表是否存在
if (node == NULL)
{
return 0;
}
//判断是否是根节点
if (node->id == id)
{
//是根节点
*root = 1;
return node;
}
else
{
//不是根节点
*root = 0;
//遍历
while (node->next != NULL)
{
if (node->next->id == id)
{
return node;
}
else
{
node = node->next;
}
}
return 0;
}
}
/*********************************************************************
* 在哈希表删除节点
*说明:
*1.删除的不是当前节点,而是当前节点后的一个节点
输入:node:删除此节点后面的一个节点
new_node:新节点
**********************************************************************/
void delete_link_node(Link_Node_Ptr node)
{
Link_Node_Ptr delete_node;
//重定向需要删除的前一个节点
delete_node = node->next;
node->next = delete_node->next;
//删除节点
free(delete_node);
delete_node = NULL;
}
/*********************************************************************
* 在哈希表删除根节点
输入:node:根节点
**********************************************************************/
void delete_link_root_node(Link_Node_Ptr node)
{
uint8_t pos = 0;
//用哈希函数获得位置
pos = hash_func(node->id);
//哈希表头清空
Hash_Table[pos]->next = NULL;
//删除节点
free(node);
node = NULL;
}
/*********************************************************************
* 主函数
*说明:实现对哈希表的新建,建立节点,查询及增加,删除节点的操作
**********************************************************************/
int main()
{
Link_Node_Ptr node;
uint8_t temp = 0;
init_hash_table();
//插入数据id = 1,data = 2;
node = init_link_node();
node->id = 1;
node->data = 2;
append_link_node(node);
//插入数据id = 100,data = 101
node = init_link_node();
node->id = 100;
node->data = 101;
append_link_node(node);
//id = 1000,data = 1001
node = init_link_node();
node->id = 1000;
node->data = 1001;
append_link_node(node);
//id = 10000,data = 10001
node = init_link_node();
node->id = 10000;
node->data = 10001;
append_link_node(node);
//查询id = 1000;
node = search_link_node(1000,&temp);
if (node != 0)
{
if (temp == 0)
{
printf("所需查询id的值为%d\n",node->next->data);
//删除
delete_link_node(node);
}
else
{
//根节点
printf("所需查询id的值为%d\n",node->data);
//删除
delete_link_root_node(node);
}
}
else
{
printf("查询失败\n");
}
//查询id = 1000;
node = search_link_node(1001,&temp);
if (node != 0)
{
if (temp == 0)
{
printf("所需查询id的值为%d\n",node->next->data);
}
else
{
//根节点
printf("所需查询id的值为%d\n",node->data);
}
}
else
{
printf("查询失败\n");
}
getchar();
return 0;
}
1、尾部栏与头部栏结构差不多,区别是设置的data-role属性值不同,为了减少各按钮间的距离,通常需要在按钮的外围添加一个data-role属性值为controlgroup的容器,形成一个按钮组显示在尾部栏中。同时,在该容器中添加一个data-type属性,并将属性值设置为horizontal,表示按钮按水平顺序排列。
2、示例代码:
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<link href="/blog_article/Css/jquery.mobile-1.2.0.min.css" rel="Stylesheet" type="text/css"/>
<script src="/blog_article/Js/jquery-1.8.3.min.js" type"text/javascript"></script>
<script src="/blog_article/Js/jquery.mobile-1.2.0.min.js" type="text/javascript"></script>
</HEAD>
<BODY>
<div data-role="page">
<div data-role="header"><h1>头部栏</h1></div>
<div data-role="content">
<p>添加尾部栏按钮</p>
</div>
<div data-role="footer">
<div data-role="controlgroup" data-type="horizontal">
<a href="#" data-role="button" data-icon="home">关于公司</a>
<a href="#" data-role="button" data-icon="forward">联系我们</a>
</div>
</div>
</div>
</BODY>
</HTML>
3、效果图预览: