1.自定义对话框
在layout文件夹下创建自定义对话框的样式
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView
android:textColor="@android:color/white"
android:background="@android:color/black"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="30dp"
android:text="设置密码"/>
<EditText
android:hint="请输入密码"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:inputType="textPassword"
android:hint="请再次输入密码"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<LinearLayout
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="确定"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="取消"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
在java代码里写 如果不像下面这么些,2.3会出现黑色边框
AlertDialog.Builder builder = new Builder(this);
AlertDialog dialog = builder.create();//自己创建一个对话框
dialog.setView(view, 0, 0, 0, 0);//第一个参数:加载哪个布局 后面几个参数是距离上下左右的边距
dialog.show();
public class Md5Utils {
/**
* md5加密工具方法
*
* @param text
* @return
*/
public static String encode(String text) {
try {
MessageDigest digester = MessageDigest.getInstance("MD5");
byte[] result = digester.digest(text.getBytes());
StringBuffer sb = new StringBuffer();
for (byte b : result) {
int number = b & 0xff;// 加盐
String hexStr = Integer.toHexString(number);
if (hexStr.length() == 1) {
sb.append("0");
}
sb.append(hexStr);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
// can't reach 不可能发生
return "";
}
}
}
3.菜单设置和点击菜单后的事件
(1)先设置Menu里要显示的item,在res目录下的menu文件夹里创建文件
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/item_about"
android:title="关于...">
</item>
</menu>
(2)覆写onCreateOptionsMenu和onOptionsItemSelected方法
public boolean onCreateOptionsMenu(Menu menu) {//创建Menu时执行改方法
//将xml文件转换成menu布局
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.lost_find_menu, menu);//第一个参数:将要被转换的xml文件(在menu文件夹下) 第二个参数:转换成菜单对象后赋值给这个menu
return super.onCreateOptionsMenu(menu);//返回true才会创建menu
}
public boolean onOptionsItemSelected(MenuItem item) {//当点击Menu上的item的时候执行该方法
switch (item.getItemId()) {
case R.id.item_about:
Toast.makeText(getApplicationContext(), "关于...", Toast.LENGTH_SHORT).show();
break;
}
return super.onOptionsItemSelected(item);
}
4.在非Activity上下文里开启Activity,一定要设置flag
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
5.获取SIM卡信息,注意配置查看手机状态权限 android.permission.READ_PHONE_STATE
TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);//电话管理器
String simNum = manager.getSimSerialNumber();
6.Activity之间切换的动画效果
(1)在res目录下创建anim文件夹创建文件 (要配置4个文件,显示下一页的进入和移出 显示上一页时的进入和移出 )
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100%p"
android:toYDelta="0" >
<!--
duration:持续时间
fromXDelta:x起点位置
toXDelta:x终点位置
fromYDelta:y起点位置
toYDelta:y终点位置
-->
</translate>
手势识别器:三大步
1.声明一个手势识别器
private GestureDetector mGestureDetector;
2.初始化手势识别器(在onCreate中执行)
mGestureDetector = new GestureDetector(this,new GestureDetector.SimpleOnGestureListener(){
//手指在屏幕上滑动时执行该方法
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
if(!(Math.abs(velocityX)<100)){//X轴速度大于100
if(e2.getRawX()-e1.getRawX()>200){//显示上一个界面
pre(null);
return true;
}else if(e1.getRawX()-e2.getRawX()>200){//显示下一个界面
next(null);
return true;
}
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
3.覆写onTouchEvent方法(手指触摸屏幕的时候执行)
public boolean onTouchEvent(MotionEvent event) {//当手指触摸屏幕的时候就会调用该方法, MotionEvent是当前的触摸事件
mGestureDetector.onTouchEvent(event);//将当前的触摸事件,传给手势识别器的onFling回调函数去执行
return super.onTouchEvent(event);
}
4.在打开Activity后执行overridePendingTransition 此方法必须在startActivity或finish后执行
@Override
public void next(View view) {
Intent intent = new Intent(this,Setup2Activity.class);
startActivity(intent);
finish();
//此方法必须在startActivity 或者finish方法后边
overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);
}
7.android.provider.Telephony.SMS_RECEIVED 接收短信广播在4.2和4.3版本的时候ecpilse上是没有提示的,但是可以手动写,照样识别。
8.播放音乐
//此方法已经自动调用了prepare()不能再手动调用
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.c);
mediaPlayer.setVolume(1.0f, 1.0f);//设置左声道和右声道的声音为最大
//mediaPlayer.setLooping(true); 设置永久循环
mediaPlayer.start();