在Android中,通常来讲一个应用会存在几十个页面,而且一个应用通常也会使用一个特定的主题,其中的页面的风格也是一致的,而且页面中的动画效果、页面的切换效果等也应该保持一样的风格,那么就须要一个基类,来完成页面的基础设置,这就是所谓的基类。java
界面统一管理缘由
ide
界面统一管理的基础
当应用中的界面达到必定数量级时,为了可以让用户更容易操做上手,产品设计时会将界面显示风格进行统一。布局
案例驱动:
动画
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
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);
}
}
|
分析:
案例中主要实现的就是在同一主题下的页面的切换效果进行统一,初始化了手势识别器,而且让手势识别器生效。接下来看一下继承自这个基类的一个页面的设置this
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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()中没有写任何的内容是由于没有上一页。spa
也欢迎你们来本文首发地址:http://jackyonline.org/archives/152,欢迎点评和留言。若是有不妥之处,欢迎指教~设计