<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天在android开发技术交流群中有人问了这么一个问题”禁用横竖屏切换需要在没个activity中都添加吗?有的人回答是的,在application中设置就好了。但是博主的第一个想法就是写一个含有禁用横竖屏权限的父类Activity,让所有的子类都继承该Activity就可以实现了禁用横竖屏切换的功能。博主目前还不知道这个功能是怎么实现的,我知道application中有很多的权限,但是博主还处于android的学习阶段,目前并不是很了解,只是针对这个问题有了这么一个activity的继承思想,博主也会找个时间学习了解一下全部的权限然后再分析给大家,希望能一起进步。我想写了这么一个activity不仅仅提高了我们的项目开发效率,提高代码的重用性,减少错误率等等都是有很大的帮助的,下面就是博主写的一个父Activity,这个activity的主要功能是手势识别器,下面代码和详细注释贴上。</span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">//主要的包,android studio有自动导包的功能,但是有的时候会出现冲突,例如Handle。
import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
//既然是一个Activity 首先必须继承Activity.
public abstract class SetupWizardBaseActivity extends Activity {
//创建私有手势识别器对象
private GestureDetector gestureDetector;
//实现Activity方法。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//手势识别器主体实现部分,更多的关于手势识别器的知识请看楼主转载的博客,他写的很好。
gestureDetector=new GestureDetector(this,new GestureDetector.SimpleOnGestureListener()
{
@Override
/*
* e1表示滑动的起点 e2滑动终点。
* velocityX表示水平速度
* veloctity表示垂直速度。
<span style="white-space:pre"> </span> *这两个速度都是浮点值,如果有需要的话,就比如用户滑得太快了或者太慢了你不想让它识别可以自定义一下其中的功能。<span style="white-space:pre"> </span>
* */
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
<span style="white-space:pre"> </span>
//跳转上一页,向右滑
if(e2.getRawX()-e1.getRawX()>200){
showPriviousPage();
return true;
}
//跳转下一页,向左滑
if(e1.getRawX()-e2.getRawX()>200){
showNextPage();
return true;
}
return super.onFling(e1, e2, velocityX, velocityY);
}
});
}
//因为这个activity用于滑动跳转于不同的页面,所以跳转的页面的功能不能写死了,需要让子类强制实现这两个功能,所以把这两个功能定义为抽象abstract。
public abstract void showNextPage();
public abstract void showPriviousPage();
//这两个函数大家可以忽略,因为博主的项目需要所以添加的,其实这里是Button的两个onclick监听功能,大家应该看得出来吧?因为有的用户喜欢点击跳转页面有的喜欢滑
//动跳转页面,所以博主给这个页面添加了两个Button。
public void nextSetup(View view) {
showNextPage();
}
public void previousSetup(View view) {
showPriviousPage();
}
@Override
//手势识别GestureDctector
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);//委托手势识别器处理event事件。
return super.onTouchEvent(event);
}
}
接下来是博主一个子activity继承该父Activity的例子,代码也给大家贴上,看看是不是很简洁!
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"></span><pre name="code" class="java">import android.content.Intent;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
public class SetupWizard01Activity extends SetupWizardBaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setup_wizard01);
}
@Override
public void showNextPage() {
startActivity(new Intent(this,SetupWizard02Activity.class));
finish();
}
@Override
public void showPriviousPage() {
startActivity(new Intent(this,HomeActivity.class));
finish();
}
public void nextSetup(View view){
startActivity(new Intent(SetupWizard01Activity.this,SetupWizard02Activity.class));
finish();
}
}
搞定!
<span style="white-space:pre"> </span>今天关于Activity的继承思想就先写到这里了,其实类似于自定义的组合控件啊,接口什么的都有继承思想穿梭于其中,博主有时间会将这些东西一一分享给大家,一起进步。
<span style="white-space:pre"> </span>2015-12-09