2013年6月20日 10:58:01

该说,下了两天的雨,这绝对爽死了是吧..今早看来是睡得最惬意最容易让人懒床的一天呢,课一天休一天,这个肯定会惯坏我们的...

不认真了呢,你看你,好习惯都坚持这么久了,最近却要慢慢颓废不写博客了的样子,,泥煤的,不是按理来说新养2周以上的习惯就已经能让你成型的么,我这都两个月以上了,却在这阵子还慢慢地拖拉下来,这什么性格喂讨厌!天蝎座会这样么?天蝎座会有点“有新就颓废旧”么?奶奶个熊,反正就是有新东西左右我了才会也改变了长久以来的好习惯吧,,

回顾一下从上篇到现在的一周我为什么没写。。13因为老师第一次带着大家变讲边一起写,所以那天很兴奋才晚上写了博客的,14休肯定是玩去了,因为假时感觉写不了什么东西,.15到17的周六到周一上课,16号父亲节(我那忙碌的为家庭奔波的老爸啊!)...15号竟然没翻到笔记,好吧忘了课程了,也估计就是这天我U盘坏了读不起的原因吧(可恶的水货!)

16号的是讲了事件处理,哦对主要写的是个计算器界面,实现简单的科学的从左到右依次计算,截取符号的方式:

基于监听的事件处理和基于回调的事件处理(java是事件委托模型)
事件源,监听器(处理事件)
安卓特有的回调处理,自己处理

监听器处理方式:
Activity本身作为事件监听器
匿名内部类
外部类
内部类
直接绑定到标签(在xml里,某要实现事件,有熟悉Click=“click”),再在Activity里写个void click(View v){}方法。
MVC模式。C:control,控制器事件处理

回调事件处理:如自定义个组件,里面可重写自己想要实现的方法,可包括如点击事件onTouchEvent,xml里直接用,界面里可直接实现处理

手势(Gesture)触
手势检测,需创建类GestureDetector,重写方法OnGestureListener监听器对象
onDown;onFling(4参数);onLongPress;onScroll;onShowPress;onSingletapUp;(implements OnGestureListener即可)
onFling要实现,还要重写onTouchEvent方法,修改返回为gestureDetector.onTouchEvent(event)

关键代码:

// 获取数字键和计算键的值并显示到文本框里
	public void input(View v) {
		Button btn = (Button) v;
		String btnStr = btn.getText().toString();
		et = (EditText) findViewById(R.id.editText1);
		String contentText = et.getText().toString();
		contentText += btnStr;
		et.setText(contentText);
		// 设置光标在末尾,即下标的index是字符串的长度
		et.setSelection(contentText.length());

		if ("+".equals(btnStr) || "-".equals(btnStr) || "×".equals(btnStr)
				|| "÷".equals(btnStr)) {
			flagList.add(btnStr);
		}
	}


 

// 等于,计算
	public void dengyu(View v) {
		String text = et.getText().toString();
  
		String[] strs = text.split("(\\+)|[-×÷]");
		// int content = 0;
		// if (text.indexOf("+") != -1) {
		// String[] texts = text.split("\\+");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// + Integer.parseInt(texts[1]);
		// }
		// } else if (text.indexOf("-") != -1) {
		// String[] texts = text.split("\\-");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// - Integer.parseInt(texts[1]);
		// }
		// } else if (text.indexOf("×") != -1) {
		// String[] texts = text.split("\\×");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// * Integer.parseInt(texts[1]);
		// }
		// }
		// //bug:得数怎么让其显示为小数呢?若前面content定义为double,则每次计算都有“.0”什么的。看着烦
		// else if (text.indexOf("÷") != -1) {
		// String[] texts = text.split("\\÷");// 以+分割
		//
		// if (texts.length == 2) {
		// content = Integer.parseInt(texts[0])
		// / Integer.parseInt(texts[1]);
		// }
		// }
		// et.setText(content + "");
		int result = Integer.parseInt(strs[0]);
		for (int i = 0; i < flagList.size(); i++) {
			if ("+".equals(flagList.get(i))) {
				result += Integer.parseInt(strs[i + 1]);
			} else if ("-".equals(flagList.get(i))) {
				result -= Integer.parseInt(strs[i + 1]);
			} else if ("×".equals(flagList.get(i))) {
				result *= Integer.parseInt(strs[i + 1]);
			} else if ("÷".equals(flagList.get(i))) {
				result /= Integer.parseInt(strs[i + 1]);
			}
		}
		 et.setText(result+"");
		et.setSelection(et.length());
		System.out.println(result);

		flagList.clear();
	}


17号(对了,观摩反编译代码的memo的编译文本界面,我还没实现换行线..所以就不贴代码了..):

昨天的事件,事件监听器,接触的比较多的是onclicklistener,还有其他的课官网去查,利用java提供是委托事件模型,自创;回调机制,不会实现监听器,谁发出谁处理,可自定义组件,写方法,一般要重写3个构造方法
手势:implements OnGestureListener,onfling方法(4参数:开始,结束,横纵向速率)
左右切换欢迎界面,首先int数组各图片位置,交给手势管理器去处理,new OnGestureDetector,setImageDrawable是传对象,xxxresource是传ID。有方法linearLayout.getChildAt(index),获取几。

今天,继续读几下备忘录程序代码。今天主要实现从右到左实现跳出删除按钮,并写编辑界面,包括划行线。

MemoEdited,
右上,Hierarchy View看布局。
ui里新包(窗口组件)widget,IphoneEditText extends EditText(3构造方法),IphoneMemoLinedEditText extends IphoneEditText (3构造方法); 【一大波。。看代码吧】

又讲怎么获取系统信息。安卓又限制不能再子线程里改组件状态等
(第六章ppt)
响应系统设置 Configuration类
消息传送机制 Handle:再新启动线程中发送消息void sendMessage,再主线程煮获取并处理消息void

作业:1.memo程序的按钮删除,只一行
2.某图片(组件)的移动,如点击某按钮后,自动移动(改变margingleft和top):

 

/**
 * Configuration 的一些些
 * @author Administrator
 *
 */
public class An0617Activity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		TextView tv = (TextView) findViewById(R.id.main_textview_1);
		String configStr = "";
		Configuration config = getResources().getConfiguration();
		configStr +="fontScale字体缩放因子"+ config.fontScale + "\n";
		configStr +="keyboard键盘类型"+ config.keyboard + "\n";
		configStr +="地区"+ config.locale + "\n";
		configStr +="导航"+ config.navigation + "\n";
		configStr +="111"+ config.orientation+ "\n";
		configStr +="222"+ config.touchscreen + "\n";

	}
}

讲了Handler:

/**
 * 自写Handler类
 * 
 * @author Administrator
 * 
 */
public class ChangeImageHandle extends Handler {
	private int[] images = new int[] { R.drawable.whatsnew_fornew_01,
			R.drawable.whatsnew_fornew_02, R.drawable.whatsnew_fornew_03,
			R.drawable.whatsnew_fornew_04, R.drawable.whatsnew_fornew_05 };
	private ChangeImageActivity activity;

	public ChangeImageHandle(ChangeImageActivity activity) {
		// 构造方法
		this.activity = activity;
	}

	/**
	 * 这是些什么?!
	 */
	@Override
	public void handleMessage(Message msg) {
		// TODO Auto-generated method stub
		super.handleMessage(msg);
		if (msg.what == ChangeImageActivity.CHANGE_IMAGE) {
			ImageView imageView = (ImageView)activity.findViewById(R.id.change_image_main_image1);
			Log.i("imgsadfdsfsdf", imageView+"");
			imageView.setImageResource(images[msg.getData().getInt("index")]);
		}

	}
}
/**
 * 关于Handel,切换图片的类
 * 
 * @author Administrator
 * 
 */
public class ChangeImageActivity extends Activity {

	public static final int CHANGE_IMAGE = 1;

	private Handler handler;// 导os包

	private int index = 0;
	private boolean isRun = true;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.change_image_main);

		// handler = new Handler() {
		// @Override
		// public void handleMessage(Message msg) {
		// super.handleMessage(msg);
		// if (msg.what == CHANGE_IMAGE) {
		// ImageView imageView = (ImageView)
		// findViewById(R.id.change_image_main_image1);
		// imageView.setImageResource(images[index]);// 这个images是哪来的?
		// }
		// }
		// };

		handler = new ChangeImageHandle(this);
		Button btn1 = (Button) findViewById(R.id.change_image_main_btn1);

		// 实现事件
		btn1.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				new Thread() {
					@Override
					public void run() {
						isRun = true;
						for (index = 0; index < 5; index++) {
							
							Message msg = new Message();
							msg.what = CHANGE_IMAGE;
							// 创建存放数据的map对象
							Bundle bundle = new Bundle();
							bundle.putInt("index", index);
							msg.setData(bundle);
							handler.sendMessage(msg);
							if (isRun ==false) {
								return;
							}
							try {
								Thread.sleep(1000);
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
							if (index == 4) {
								index = 0;
							}
						}

					}
				}.start();
			}
		});

		Button btn2 = (Button) findViewById(R.id.change_image_main_btn2);
		btn2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				isRun = false;
			}
		});

	}
}


18号修回学校,作业要做的写出删除按钮的弹出效果都没写..主要是回去弄个盖章和关于校内英语四级没过情况的申述处理..哎呀这实在是让人揪心得很,这么简单的英语都考不过,我的英语白学了(你就没怎么学过英语好吧?)..这件事必定又是我人生几大后悔事之一了!(没有学位证泥煤啊!即使后面自考英语四级那多难啊,再说以后有那个心或者时间看英语么,早知道校内的这个这么简单的看一阵子书绝对能过的好吧,没前人指教个人的觉悟也不够啊),泥煤..再说吧.

19号昨天了,Activity的话,之前有看视频过的知识点,所以心理上在课上轻松了很多(话说这个疯狂安卓的pdf文档知识点顺序,我找的2种视频的知识点有些还没有,比较纠结;我是那种有预习上课才有成效的娃,没有能预习的感觉非常难受)

Activity 基本程序单元
应用程序组件简介
创建
生命周期
启动另外个activity
之间的数据传递


android应用程序组件简介:活动组件(Activity),服务组件(Service,基本和Activity一样,无界面,后台应用),广播接受者组件(Broadcast receivers),内容提供者(Content Providers,实现不同应用程序之间获取数据)

Activity基本的创建和配置,可视化交互界面,可继承ListActivity、MapActivity等,复写onCreate()方法,需在清单文件中声明。
AndroidManifest.xml:配4大组件
<manifest>根元素,属性*包是R的、xmlns、sharedUserId、*versionCode版本、*versionName名称、installLocation安装参数
第二层:Uses-sdk,<application>里才是activity
第三层Activity,各应用各自有Task任务栈
第四层intent-filter:android:priority优先级、action 、category
第五层service

activity的生命周期:
活动,栈顶,有焦点并可见,
暂停,失去焦点但可见
停止,
销毁

onCreate第一次启动时调用,可以进行组件的初始化,onStart,onResume焦点,恢复时也调,onRestart,onPause被其他打断,onStop,onDestroy销毁。

启动另外个Activity:startActivity和startActivityForResult
Intent,将数据封装到Bundle对象中传递
Intent intent=new Intent(ac.this,other.class);
Bundle bundle=new Bundle();
bundle.putSting("a111",信息);
intent.putExtra(bundle);//或者不需要Bundle,直接intent.putExtra("a111",信息);
startActivity(intent);
(若在第二界面有事件finish(),则自身销毁返回上个界面)

第二界面获取数据:Intent intent=getIntent();
intent.getStringExtra("a111");


作业:登陆(多用户,bean) 存款 取款 查询 推出 ATM机


用Intent传数据和打开新的Activity,就上面简单代码,明天会深入讲更多的吧.好吧今天得完成好作业了先

 

......说好的分析为啥没写博客呢?

嗯,其中一点应该有:入手同学刚买却不想要的平板,感兴趣的里面装了有3款音乐游戏,下歌并且试玩都搞了估计有一整下午时间,然后现在觉得那个OSU的歌比较不大众,还准备下点耳熟能详的(今天一定要作业做好了再弄),前几天玩OSU稍难的都很苦手呢,所以课间就可以成为戴耳机听歌提神的替代品了...然后前天发现机子里已有的弹钢琴的个应用,玩了下,哇塞,有1000多首歌,经典、流行、儿时、影视、动漫、游戏、红歌各种有,经典至贝多芬的,最新至今年4月的新动画OP红莲の弓矢,我擦咧看起来果断碉堡。。18号弹了一下午昨晚弹了大半夜有木有!

我知道玩久了是不好的事情,但是有个歌,比如很感伤的那种,自己谱出的效果震撼人心啊,那种感觉,虽不能达到人家那么身临其境般,也有能让人在这炎热酷暑里找到心中的凉意呢。比如弹的《团子大家族》,因为知道是经典动漫某某的,且看过了的顶尖催泪作,在曲中自然能回忆起当初看时可能流下个感人泪水吧。。。并且钢琴曲和一般我们听到的MP3感觉绝对不一样的!

看完第一季就不敢看后面的了...

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值