Android_3 事件响应
来源:互联网 发布:微盘交易软件 编辑:程序博客网 时间:2024/06/08 11:33
好了今天开始事件响应的学习
第一个先来单击事件:
来个例子先:
这个是layout布局文件:
<LinearLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity" > <EditText android:id="@+id/myed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="请在此处吐槽" /> <Button android:id="@+id/mybut" android:layout_width = "wrap_content" android:layout_height="wrap_content" android:text="摁我呀~" /> <TextView android:id="@+id/mytext" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="只愿做一个安静的美男子~" /></LinearLayout>
好了,现在更改MainActivity.java文件:
在MainAcitvity类中增加:
private EditText edit = null;
private Button but = null;
private TextView showView = null;
同时更改onCreate()文件:
this.edit = (EditText) super.findViewById(R.id.myed);//取得编辑组件
this.but = (Button) super.findViewById(R.id.mybut);//取得按钮组件
this.showView = (TextView) super.findViewById(R.id.mytext); //取得文本组件
再在MainActivity中增加类:ShowListener()
如下:
private class ShowListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
String info = null;
info = MainActivity.this.edit.getText().toString();
MainActivity.this.showView.setText("被吐槽的消息是: 啊~~" + info);
}
}
此后再在onCreate()中增加
this.but.setOnClickListener(new ShowListener());
综上,MainActivity的源码为:
package com.example.mydemo_onclick;import android.R.string;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private EditText edit = null;private Button but = null;private TextView showView = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.edit = (EditText) super.findViewById(R.id.myed);//取得编辑组件this.but = (Button) super.findViewById(R.id.mybut);//取得按钮组件this.showView = (TextView) super.findViewById(R.id.mytext); //取得文本组件this.but.setOnClickListener(new ShowListener());//一旦单击,则立即调用ShowListener()}private class ShowListener implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO 自动生成的方法存根String info = null;info = MainActivity.this.edit.getText().toString();MainActivity.this.showView.setText("被吐槽的消息是: 啊~~" + info);}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
ok、一个基本的按键相应事件即结束,
以上方法的实现操作使用的是“单独定义内部类实现”
现在开始step_2,即以“整个处理事件都在匿名内部类中完成”,
即MainActivity的代码为:
package com.example.mydemo_onclick;import android.R.string;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private EditText edit = null;private Button but = null;private TextView showView = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.edit = (EditText) super.findViewById(R.id.myed);//取得编辑组件this.but = (Button) super.findViewById(R.id.mybut);//取得按钮组件this.showView = (TextView) super.findViewById(R.id.mytext); //取得文本组件this.but.setOnClickListener(new OnClickListener(){public void onClick(View arg0) {// TODO 自动生成的方法存根String info = null;info = MainActivity.this.edit.getText().toString();MainActivity.this.showView.setText("被吐槽的消息是: 啊~~" + info);}});//一旦单击,则立即调用ShowListener()}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}
对了,现在来学习一个句式:
//现在的这个info1是int类型
//String转int
MainActivity.this.info1 = Integer.parseInt(MainActivity.this.n1.getText().toString());
//好,现在来学习int->String
String.valueOf(info1);
//eg:
MainActivity.this.n3.setText(String.valueOf(info1));
好了现在开始step_5:屏幕方向的转变
具体函数:
.getRequestedOrientation
.setRequestedOrientation
数值:
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED //未指明方向
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT //竖屏显示
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE //横屏显示
不知道李、sir那边怎么解决这个bug,反正我的是没bug不用解~~,哈哈
ok、整个屏幕切换时这么一个思路:
1、先在布局文件中添加相应的组件(按钮组件,图像组件)
2、再在MainActivity文件中定义变量,关联组件,并对组件进行监听。
监听函数如下:
if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED){
MainActivity.this.butchange.setText("错误!屏幕呢原方向无法识别");
}
else{
if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
3、再在AndroidManifest.xml文件中进行预设操作赋值
android:screenOrientation="portrait"
整个文件如下:
activity_main.xml文件:
<LinearLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:id="@+id/mybutchange"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="改变屏幕方向"
/>
<ImageView
android:id="@+id/myimg"
android:layout_width="180px"
android:layout_height="125px"
android:src="@drawable/mldn"
/>
</LinearLayout>
MainActivity.java文件如下:
package com.example.changescreen;
import android.os.Bundle;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button butchange = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.activity_main);
this.butchange = (Button) super.findViewById(R.id.mybutchange);
//使用默认提醒去输入的话,是不区分大小写的,但是一旦输错一个字母立马就取消提醒
this.butchange.setOnClickListener(new MyOnClickListener());
}
private class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED){
MainActivity.this.butchange.setText("错误!屏幕呢原方向无法识别");
}
else{
if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(MainActivity.this.getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
AndroidManifest.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.changescreen"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.changescreen.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
嗯、整理下思路:
我的原意是以为:通过Button按钮的单击事件,可以切换横屏or竖屏,同时更改Button按钮的文字,
以及不同图片的切换。
但是!现在事实上的一个工作流程为:点击按钮->切换横竖屏->更改按钮的显示文字->同时,
在旋转屏幕的同时,立马回复按钮文字的默认设置->结果就是按钮文字更换了一瞬间,有立马恢复默认效果
现在应该在MainActivity.java中重写一个类:
ok、整个屏幕转换的demo到此结束!
step_7 明文显示密码:
密文显示:android.text.method.HideReturnsTransformationMethod
明文显示:android.text.method.PasswordTransformationMethod
密码显示方式的切换:明文/密文的切换
private class MyOcClickListener implements OnClickListener{
@Override
public void onClick(View arg0) {
// TODO 自动生成的方法存根
if(MainActivity.this.check.isChecked()){
//隐藏显示,即密文
MainActivity.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else{
//明文显示
MainActivity.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
}
ok、到这里,基本就结束了~
- Android_3 事件响应
- android_3 项目目录简介
- 事件响应
- 事件响应
- Datagrid事件响应(二)
- ItemCommand事件不响应
- 响应按钮的事件
- DirectShow中响应事件
- winform响应回车事件
- 禁止响应事件函数
- ItemCommand事件不响应
- DirectShow中响应事件
- Swing事件响应机制
- Applet事件响应
- wxPython之响应事件
- 计时响应事件
- Applet事件响应
- DIRECTSHOW中的响应事件
- 九度 题目1449:确定比赛名次
- Unity3D学习之第四天(脚本入门)
- 关于struts2加载xml失败的处理
- Android项目之HomeHealth基础学习1:Baseadapter
- .net中XML的详细解析
- Android_3 事件响应
- POJ 1661 hlep Jimmy 题解
- wordpress模板插件收集
- 九度 题目1448:Legal or Not
- Android - 位置定位(Location)服务(Service)类的基本操作
- MATLAB入门教程,比较全面
- 在code::block中使用boost库
- Redis 3.0 源码解析---底层数据结构分析(1)
- 安卓项目有感叹号