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、到这里,基本就结束了~


0 0
原创粉丝点击