(转)Android中的基类—抽取出来公共的方法

Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果、页面的切换效果等也应该保持同样的风格,那么就需要一个基类,来完成页面的基础设置,这就是所谓的基类。

界面统一管理原因

当应用中的界面达到一定数量级时,如几十个界面,便于项目管理

提高界面的处理速度

避免由于多Activity导致的问题

界面统一管理的基础

当应用中的界面达到一定数量级时,为了能够让用户更容易操作上手,产品设计时会将界面显示风格进行统一。

案例驱动:

public abstract class BaseSetupActivity extends Activity {

// 该抽象类,作为四个设置向导的基类,定义共同的方法

private SharedPreferences mSharedPreferences;

private static String TAG = "BaseSetupActivity";

// 声明一个手势识别器

private GestureDetector mGestureDetector;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

mSharedPreferences = getSharedPreferences("config", MODE_PRIVATE);

// 初始化手势识别器

// 2.初始化手势识别器

// Basic Default Base Simple

mGestureDetector = new GestureDetector(this,

new GestureDetector.SimpleOnGestureListener() {

/**

* 划屏对应的方法. e1 手指第一次触摸屏幕 e2 手指离开屏幕瞬间 velocityX 水平方向移动的速度

* <span style="text-decoration: underline;">px</span>/s velocityY 竖直方向移动的速度

*/

@Override

public boolean onFling(MotionEvent e1, MotionEvent e2,

float velocityX, float velocityY) {

if (Math.abs(velocityX) < 100) {

Log.i(TAG, "移动的太慢,动作不合法");

return true;

}

if ((e2.getRawX() - e1.getRawX()) > 200) {

showPre(null);

return true;

}

if ((e1.getRawX() - e2.getRawX()) > 200) {

showNext(null);

return true;

}

// 其实返回的就是false

return super.onFling(e1, e2, velocityX, velocityY);

}

});

// 子类中初始化布局

initView();

}

// 设置当前的view布局

public abstract void initView();

// 显示下一个界面

public abstract void showNext(View view);

// 显示上一个界面

public abstract void showPre(View view);

// 3.activity被触摸的时候调用的方法 , 需要在这个里面让手势识别器 生效

@Override

public boolean onTouchEvent(MotionEvent event) {

// 让手势识别器 生效

mGestureDetector.onTouchEvent(event);

return super.onTouchEvent(event);

}

}

分析:

案例中主要实现的就是在同一主题下的页面的切换效果进行统一,初始化了手势识别器,并且让手势识别器生效。接下来看一下继承自这个基类的一个页面的设置

public class Mobile_safeActivity1 extends BaseSetupActivity {

private static String <span style="text-decoration: underline;">TAG</span> = "Mobile_safeActivity1";

@Override

public void initView() {

setContentView(R.layout.mobile_safeactivity1);

}

@Override

public void showNext(View view) {

Intent intent = new Intent(this, Mobile_safeActivity2.class);

startActivity(intent);

finish();

// 设置切换的动画效果,该方法将会在程序执行startActivity以及finish()方法的时候进行调用

overridePendingTransition(R.anim.tran_next_in, R.anim.tran_next_out);

}

@Override

public void showPre(View view) {

}

}

分析:

非常明显这个Mobile_safeActivity1继承自前面的基类BaseSetupActivity,因此当手指在屏幕上进行滑动的时候,将会触发showNext()和showPre()两个方法,并且在切换时通过overriderPendingTransition()产生屏幕滑动的切换效果,这里可以根据实际需求进行设置,并且这个方法将会在执行finish()方法后自行调用。而在showPre()中没有写任何的内容是因为没有上一页。

摘自http://www.2cto.com/kf/201403/288116.html

(转)Android中的基类—抽取出来公共的方法

时间: 2024-08-25 01:06:28

(转)Android中的基类—抽取出来公共的方法的相关文章

Android中的基类—抽取出来公共的方法

在Android中,一般来说一个应用会存在几十个页面,并且一个应用一般也会使用一个特定的主题,其中的页面的风格也是一致的,并且页面中的动画效果.页面的切换效果等也应该保持同样的风格,那么就需要一个基类,来完成页面的基础设置,这就是所谓的基类. 界面统一管理原因 当应用中的界面达到一定数量级时,如几十个界面,便于项目管理 提高界面的处理速度 避免由于多Activity导致的问题 界面统一管理的基础 当应用中的界面达到一定数量级时,为了能够让用户更容易操作上手,产品设计时会将界面显示风格进行统一.

C#派生类中使用基类protected成员的方法

我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被protected修饰时,我们应该怎么在派生类中使用基类成员呢,下面将介绍使用方法. 首先我们贴一段错误的使用代码: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.ReadLine(); 6 7 } 8 } 9 pub

C# 类中隐藏基类方法和Partial

原文:C# 类中隐藏基类方法和Partial 今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继承了它的执行代码,如果成员时虚拟的,我们可以用override重写这段执行代码.但无论他是否是虚拟的,都可以通过new 关键字来隐藏它.例如: public class BaseClass { public void DoSomething() { //

024_MapReduce中的基类Mapper和基类Reducer

内容提纲 1) MapReduce中的基类Mapper类,自定义Mapper类的父类. 2) MapReduce中的基类Reducer类,自定义Reducer类的父类. 1.Mapper类 API文档 1) InputSplit输入分片,InputFormat输入格式化 2) 对Mapper输出结果进行Sorted排序和Group分组 3) 对Mapper输出结果依据Reducer个数进行分区Patition 4) 对Mapper输出数据进行Combiner 在Hadoop官方文档的Mapper

Android中的Matrix类介绍

Matrix顾名思义就是大学的线性代数中的矩阵,关于矩阵的基本知识和加减乘除运算这里不再赘述. Android中的Matrix类是一个比较简单的3x3的3阶矩阵,结构如下: float matrix = {MSCALE_X, MSKEW_X, MTRANS_X, MSKEW_Y, MSCALE_Y, MTRANS_Y, MPERSP_0, MPERSP_1, MPERSP_2 }; 结构如上:其中 MSCALE_X和MSCALE_Y分别是控制X轴和Y轴方向的缩放,MSKEW_X和MSKEW_Y是

(转)谈谈Android中的Rect类——奇葩的思维

最近在工作中遇到了一些问题,总结下来就是Android中Rect这个类造成的.不得不说,不知道Android SDK的开发人员是怎么想的, 这个类设计的太奇葩了.首先介绍一下Rect类:Rect类主要用于表示坐标系中的一块矩形区域,并可以对其做一些简单操作.这块矩形区域,需要用左上右下两个坐标点表示(left,top,right,bottom),你也可以获取一个Rect实例的Width和Height.就在这里,奇葩的事情来了,作为一个有一点经验的做图像或者矩阵运算或者编程的程序员来说,大家的共识

【C++】通过基类的指针变量访问派生类中由基类继承来的隐藏对象

//<img src="http://img.blog.csdn.net/20150512213309005?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> // 可以将一个派生类的对象的地址赋给其基类的指针变量,但

hibernate实体继承问题(派生类重写基类某数学系的get方法)

目标:hibernate的所有实体类的主键均继承一个基类IdEntity,基类如下:  /**  * 统一定义id的entity基类.  * @author MingDao  */ // JPA基类标识 @MappedSuperclass public abstract class IdEntity {  protected Long id;  @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  public Long getId(

Android中通过WebView控件实现与JavaScript方法相互调用的地图应用

在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用android方法,在这里我个人觉得有点和DWR相似. 为了让大家容易理解,我写了一个简单的Demo,具体步骤如下: 第一步:新建一个Android工程,命名为WebViewDemo(这里我在assets里定义了一个html页面). 第二步:修改main.xml布局文件,增加了一个WebView控件还有But