Android小应用(更新中...)
2016-03-18 09:26
447 查看
一、编辑框字数统计和限制
新浪微博中,在发送微博的时候,对编辑的字数一般有限制,现在就来实现这个功能实现功能:
(1)字数限制在100字以内。
(2)随时显示剩余的字数。
(3)当字数达到上限时不能在输入。并提示不能在输入了。
代码实现:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <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="wrap_content" android:orientation="vertical" 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"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@null" android:inputType="textMultiLine" android:gravity="left|top" android:minLines="8"/> <TextView android:id="@+id/tv_fontcount" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dp" android:text="你还可以输入100/100个字!"/> </LinearLayout>
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText editText;
private TextView tv_fontcount;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
tv_fontcount = (TextView) findViewById(R.id.tv_fontcount);
editText.addTextChangedListener(new TextWatcher() { //给EditText添加事件监听
private CharSequence temp;
private int selectionStart;
private int selectionEnd;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
temp = s;
}
@Override
public void afterTextChanged(Editable s) {
int number = 100 - s.length(); //剩余的字数
tv_fontcount.setText("你还可以输入" + number + "/100个字!");
selectionStart = editText.getSelectionStart();
selectionEnd = editText.getSelectionEnd();
if (temp.length() > 100) {
s.delete(selectionStart - 1, selectionEnd);
int tempSelection = selectionEnd;
editText.setText(s);
editText.setSelection(tempSelection);//设置光标在最后
Toast toast = Toast.makeText(MainActivity.this,
"输入字数已经达到上限", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0); //toast的位置设置在正中间
toast.show();
}
}
});
}
}
二、连续两次点击BACK键退出程序
private static boolean isExit = false; //退出动机 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //如果触发了BACK键 toExitTheAPK(); return false; } else{ //如果触发的不是BACK键,则执行父类中的其它方法 return super.onKeyDown(keyCode, event); } } public void toExitTheAPK() { if (isExit) { //如果点击了两次 finish(); //销毁这个Activity System.exit(0); //关闭这个进程 } else { isExit = true; //退出动机 Toast.makeText(MainActivity.this, "再点击一次退出程序!", Toast.LENGTH_SHORT).show(); mHandler.sendEmptyMessageDelayed(0,2000); //2秒钟执行这个线程 } } /*该方法用于取消退出动机*/ Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; //取消退出动机 } };
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories