结对项目 sport club(三)

好友搜索代码:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class LetterlistViewForFriend extends View {

	public LetterlistViewForFriend(Context context, AttributeSet attrs)
	{
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}
	public LetterlistViewForFriend(Context context)
	{
		super(context);
	}

	public LetterlistViewForFriend(Context context, AttributeSet attrs, int defStyle)
	{
		super(context, attrs, defStyle);
	}

	OnTouchingLetterChangedListener onTouchingLetterChangedListener;
	String[] b =
	{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
	int choose = -1;
	Paint paint = new Paint();

	boolean showBkg = false;

	@Override
	protected void onDraw(Canvas canvas)
	{
		super.onDraw(canvas);

		if (showBkg)
		{
			canvas.drawColor(Color.parseColor("#40000000"));
		}

		int height = getHeight();
		int width = getWidth();
		int singleHeight = height / b.length;
		for (int i = 0; i < b.length; i++)
		{
			//paint.setTextSize(19) ;
			paint.setColor(Color.BLACK);
			paint.setTypeface(Typeface.DEFAULT_BOLD);

			paint.setAntiAlias(true);
			if (i == choose)
			{
				paint.setColor(Color.parseColor("#3399ff"));
				paint.setFakeBoldText(true);
			}
			float xPos = width / 2 - paint.measureText(b[i]) / 2;
			float yPos = singleHeight * i + singleHeight;

			canvas.drawText(b[i], xPos, yPos, paint);
			paint.reset();
		}

	}

	@Override
	public boolean dispatchTouchEvent(MotionEvent event)
	{
		final int action = event.getAction();
		final float y = event.getY();
		final int oldChoose = choose;
		final OnTouchingLetterChangedListener listener = onTouchingLetterChangedListener;
		final int c = (int) (y / getHeight() * b.length);

		switch (action)
		{
		case MotionEvent.ACTION_DOWN:
			showBkg = true;
			if (oldChoose != c && listener != null)
			{
				if (c > 0 && c < b.length)
				{
					listener.onTouchingLetterChanged(b[c]);
					choose = c;
					invalidate();
				}
			}

			break;
		case MotionEvent.ACTION_MOVE:
			if (oldChoose != c && listener != null)
			{
				if (c > 0 && c < b.length)
				{
					listener.onTouchingLetterChanged(b[c]);
					choose = c;
					invalidate();
				}
			}
			break;
		case MotionEvent.ACTION_UP:
			showBkg = true;
			if (oldChoose != c && listener != null)
			{
				if (c > 0 && c < b.length)
				{
					listener.onTouchingLetterChanged(b[c]);
					choose = c;
					invalidate();
				}
			}

			break;
		}
		return true;
	}

	@Override
	public boolean onTouchEvent(MotionEvent event)
	{
		return super.onTouchEvent(event);
	}

	public void setOnTouchingLetterChangedListener(OnTouchingLetterChangedListener onTouchingLetterChangedListener)
	{
		this.onTouchingLetterChangedListener = onTouchingLetterChangedListener;
	}

	public interface OnTouchingLetterChangedListener
	{
		public void onTouchingLetterChanged(String s);
	}
}

  

时间: 2024-08-25 21:26:22

结对项目 sport club(三)的相关文章

结对项目 sport club(二)

界面设计及代码: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xm

结对项目3-bug的三种状态

这周和小伙伴结对构造程序,来深刻理解软件测试中,bug发现的三种状态. 1:不能触发Fault 2:触发Fault,但是不能触发Error 3:触发Error,但是不能产生Failure 我们完成的代码如下: package test; import java.util.Scanner; public class Work1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner

结对项目之小游戏编程(斗地主)

一.题目简介    本次的项目是编写一个斗地主的小游戏,实现语言:java:主要完成了GUI设计.计时线程.算法.本次项目的主要目的是对算法的学习.算法分析在心得里面. 技术难点:1.图片的移动    2.计时线程的设定   3.对牌的分割,必须考虑到优先拆分方案,将权值低的拆分方案舍去. 4.在删除的时候遇到问题了,删除不了. 二.结对分工及过程 本次结对项目的成员有两个,张国伟:负责对GUI界面的设计,完成功能:洗牌功能,发牌功能,打牌功能的图片的位移处理,基本打牌的桌面等等. 我主要负责对

软工_结对项目总结博客

关于结对编程 第一次进行真正的结对编程,而且我们组又是最奇葩的三人组合(14061183韩青长)(14061195陈彦吉),在经历了三天的合作以后,感觉收获还是蛮多的,下面是我对于结对编程的一些个人体验. 优点 在结对编程的过程中,两个人共同面对同一份代码,编码时旁边时刻有人提示监督.这样写出的代码,首先考虑的特殊情况会更多,能避免很多一个人编程时因为考虑不周而在某个不起眼的地方产生的Bug,代码质量更高,少了很多调试时间. 同时,由于两个人交替工作,一方面可以缓解疲劳,同时又因为身旁有人共同工

结对项目总结

时为几周的结对项目结束了,经历了整个结对项目开发周期,我对结对开发软件有了一些新的认识.不同于个人的开发,结对项目强调的是两个人的合作关系.之前一个人能够搞定的问题,这下不得不两个人来做,开始时我是拒绝的.但是逐渐我发现,在两个人讨论的过程中,能够发现一些隐含的问题.比如,一个人设计的时候,有些事情没想明白就先做别的了,之后就忘掉了,但是在结对项目里面,这些问题想不搞清楚也不行,经常是随便提一句,然后就讨论了起来,然后就xx了:).咳 总的来看,整个结对项目可以分为几个大的阶段:一是讨论阶段,如

结对项目(附加题)开发总结

结对项目(附加题)开发总结 这次附加题的任务就是把两个小组写的独立的UI和CORE模块打乱重组,拼接成一个新的APP. 我们小组选择了大神刘乾所在小组和我们合作交换.一拿到乾神的核心代码,我不得不说,乾神就是乾神,代码一出,直接把我镇住了,各种参数看不懂咋办?咋写UI? 还好我们的乾神同志给我们提供了帮助文档,介绍了各个参数的作用,现摘录如下: 对于计算表达式的值(CALC模式): AnswerGet(string s)其中s是给定的算式,以等号结尾. 调用生成器时,使用: public Gen

2015结对项目

结对项目 作业截止日期:2015年10月6日  我们在第一个作业中,用各种语言实现了一个命令行的四则运算小程序.我们看看如果要把我们的小程序升级为能稳定运行,解决用户问题的软件,应该怎么做. 大家写了不少四则运算的练习,这些代码都各有特色,大家写的 “软件” 也有一定的用处.如果我们要把这个功能放到不同的环境中去(例如,命令行,Windows 图形界面程序,网页程序,手机App),就会碰到困难,因为目前代码的普遍问题是代码都散落在main ( )函数或者其他子函数中,我们很难把这些功能完整地剥离

实践作业3 结对项目

结对项目 一.实践目的 1.熟悉Java GUI相关类的API. 2.理解并实践事件驱动程序设计中的监听器.监听器方法.监听器适配器接口.   二.实践要求 利用Java GUI的组件类.容器类和辅助类设计所选项目的用户界面,并在深入理解并掌握事件驱动程序设计原理的基础上,实现事件驱动的程序设计.   三.项目需求 所选项目名称:万年历. 项目需求描述,主要指应实现的主要功能. 实现了日历的查询,方便使用.界面主要是由查询输入部分和结果显示部分两部分组成. 查询输入:①一个文本域,用于输入年份.

复利计算--结对项目

结对项目:复利计算 搭档:30蔡京航  http://www.cnblogs.com/cjh123/ github:https://github.com/alfredzhu/teamwork 工作照 一.项目需求: 即要追求利益,又要面对不可预知的金融投资风险, “不能把鸡蛋放在同一个篮子里”,所以有必要进行组合投资. 通过上述计算与对比,可以帮助客户进行投资决策. 客户:那么能否帮我记录下一笔一笔不同类型的投资,并动态显示资金现值呢? 二.完成要求:以结对方式完成. 在这次结对编程中分配任务