Android焕壁

Android焕壁

一、项目背景与意义

1.1项目开发意义

​ 随着手机的不断普及与发展,人们对于个性化需求的不断提升。而手机成为人们生活中交流时间最长的电子产品,“壁纸”已经成为人们生活中不可或缺的一部分。用户浏览各种壁纸网站与APP从中寻找,收藏,更换自己喜欢的壁纸,不仅有让用户手机更简洁美观的实际作用,更能为用户提供不少情绪价值。

​ 国内外壁纸软件虽然层出不穷,但免费且能持续保障壁纸质量的APP却很少。因此基于这种实际情况,我们的小组决定开发一款与市面上截然不同的壁纸软件,最大也是最特别的不同之处在于我们不收费拥有更广阔的用户空间,让每一位用户都可以免费获得优质的壁纸资源。我们小组坚持以让用户可以不花一分钱用上好看的壁纸为宗旨以坚实的壁纸质量,多样的壁纸配件,精湛的艺术设计,精准服务用户对壁纸软件的所有需求。

1.2项目时代背景

​ 随着5G时代的到来,智能手机早已经走入人们的生活,为人们提供许多便捷的服务。互联网已经不再局限与传统的PC终端,而以为代表的移动互联网技术正在迅速的发展。因此,这要求移动的终端必须更加的智能化、网络化。目前,移动终端平台主要有:iphone OS、Symbian、Black Berry OS等。随着手机的普及,大众对于手机个性化设置的需求不断增加,壁纸作为手机个性化不可分割的一部分,需求也大大增加。因此我们小组基于安卓平台开发一款免费壁纸软件,平衡了安卓平台下用户多样的个性化需求与稀少壁纸APP间的失调。

​ 选择在安卓背景下开发,首先自从2008年Google公司推出了移动终端安卓平台以来,直到现在已经有了15年了。经过多年的时间的验证,安卓系统已经非常的完善。加之目前手机开发者的大环境安卓已经成为大众手机厂商的首选。即使接连宣传自己要推出各自专属系统的厂商,其实质也是基于安卓系统上对于用户交互系统显示方式的简单改革,因此用安卓背景作为开发背景无疑是不二之选。

​ 其次Android是一款完全开源的移动操作系统,不仅仅手机上可以使用这个操作紫铜,而且也支持各种移动设备。Android系统底层是采用的C语言进行编写的,因此具备更好的移植性与兼容性。应用层则采用目前非常流行的JAVA语言进行开发。Android的开放性与可定制性,决定了它很大的市场潜力。这与我们壁纸软件受众广阔理念相吻合。

二、市场调研与分析

2.1国内市场分析

​ 随着我国科技的不断发展,手机逐渐重要的地位使得交互界面的个性化越来越重要,不仅是手机进行输入和输出的重要媒介,任何手机信息交换的大部分过程都是通过手机界面交互进行的,不同的交互界面也将给人们带来不同的视觉感受

​ 壁纸软件在如今的市面上层出不穷,国内各大平台手机软件商店都有很多的壁纸软件,尤其是是在我国壁纸软件基本上都是出厂自带,大多数国内的手机厂家在生产手机的时候都是自带壁纸软件的,比如说:小米、华为、VIVO等。但其都有一个很重要的问题即用户好不容易找到一个自己喜欢的壁纸,却发现不少藏在软件内的隐藏收费,因此手机厂商自带的壁纸软件实际应用效果并不理想。因此我们小组致力打造一个免费的、丰富的壁纸软件来解决以上的问题去满足消费者。

2.2国外市场分析

​ 从电脑端的WindowsXP的蓝天绿草到iPhone雨水滑落玻璃,再到各种可以自己设计的动态壁纸与换皮肤的灵动岛足以看出说明对壁纸修饰手机的重视程度。国外对壁纸软件的发展和研究总体来说领先我国,但由于其下载困难,用户定位不精准,与国内机型适配度低等困难,国内用户很难从中找到适合自己的APP。

三、设计说明

3.1实验所需材料器具

Android Studio,SDK

3.2小组成员分工

富佳:组长,统筹协调负责文书部分撰写和部分代码实现

夏取明:技术实现,负责总体架构搭建与大部分功能实现

四、软件设计与实现

核心功能代码:

WallpaperManager (壁纸管理器) 是 Android 提供的用于管理壁纸的一个 API

设置壁纸的相关方法

方法 说明
setBitmap(Bitmap bitmap) 将壁纸设置为 bitmap 所代表的位图
setResource(int resid) 将壁纸设置为 resid 资源所代表的图片
setStream(InputStream data) 将壁纸设置为 data 数据所代表的图片

其它方法

方法 说明
clear() 清除壁纸,设置回系统默认的壁纸
getDesiredMinimumHeight() 最小壁纸高度
getDesiredMinimumWidth() 最小壁纸宽度
getDrawable() 获得当前系统壁纸,如果没有设置壁纸,则返回系统默认壁纸
getWallpaperInfo() 假如当前壁纸是动态壁纸,返回动态壁纸信息
peekDrawable() 获得当前系统壁纸,如果没设置壁纸的话返回 null

具体实现:

1.获得 WallpaperManager 对象

1
WallpaperManager wpManager =WallpaperManager.getInstance(this);

2.设置壁纸需要的权限

1
<uses-permission android:name="android.permission.SET_WALLPAPER"/>

3.壁纸维护工作

​ 壁纸运行在一个Android服务之中,这个服务的名字叫做WallpaperService。当用户选择了一个壁纸之后,此壁纸所对应的WallpaperService便会启动并开始进行壁纸的绘制工作。Engine是WallpaperService中的一个内部类,实现了壁纸窗口的创建以及Surface的维护工作。

4.WallpaperManagerService

​ 这个系统服务用于管理壁纸的运行与切换,并通过WallpaperManager类向外界提供操作壁纸的接口。这一层次主要体现了Android对壁纸的管理方式。

5.WindowManagerService

​ 用于计算壁纸窗口的Z序、可见性以及为壁纸应用窗口动画。这一层次主要体现了Android对壁纸窗口的管理方式。

4.1简洁的界面

​ 我们APP的界面非常的简洁清晰,分为四大模块。除了用户自主点击外,只能看到无痕滑动铺设的图片,在滑动浏览图片的过程中完全沉浸,给用户更沉浸欣赏图片和选择的机会。不会受到外界干扰,只凭借自己心动的感觉来挑选心怡的壁纸。

l 壁纸展示:

image-20241212142425028

l 启动页效果如下:

image-20241212142435523

l 代码

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
70
71
72
73
74
public class WelcomeActivity extends AppCompatActivity {

@SuppressLint("HandlerLeak")
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
if (msg.what == 1){
startActivity(new Intent(WelcomeActivity.this, MainActivity.class));
overridePendingTransition(R.anim.right_in, R.anim.left_out);
finish();
}
super.handleMessage(msg);
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 全屏
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}

setContentView(R.layout.activity_welcome);

TextView tv_welcom_animation1 = findViewById(R.id.tv_welcom_animation1);
TextView tv_welcom_animation2 = findViewById(R.id.tv_welcom_animation2);
TextView tv_welcom_animation3 = findViewById(R.id.tv_welcom_animation3);
LinearLayout ll_welcom_animation4 = findViewById(R.id.ll_welcom_animation4);
LinearLayout ll_welcom_animation5 = findViewById(R.id.ll_welcom_animation5);

scaleAnimation3(tv_welcom_animation1);
scaleAnimation2(tv_welcom_animation2);
scaleAnimation1(tv_welcom_animation3);
scaleAnimation1(ll_welcom_animation4);
scaleAnimation1(ll_welcom_animation5);

handler.sendEmptyMessageDelayed(1,1000);

}


// 缩放动画方法
ScaleAnimation animation = new ScaleAnimation(0,1,0,1,
Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);

private void scaleAnimation1(View v){
//延迟1s开始
animation.setStartOffset(1000);
//持续0.5s
animation.setDuration(500);
//3. 启动动画
v.startAnimation(animation);
}

private void scaleAnimation2(View v){
//延迟0.6s开始
animation.setStartOffset(600);
//持续0.5s
animation.setDuration(500);
//3. 启动动画
v.startAnimation(animation);
}

private void scaleAnimation3(View v){
//延迟0.2s开始
animation.setStartOffset(200);
//持续0.5s
animation.setDuration(500);
//3. 启动动画
v.startAnimation(animation);
}
}

l 首页效果图:

image-20241212142516123

l 壁纸详情:

image-20241212142532373

image-20241212142639437

4.3免费功能介绍

​ Android焕壁整个软件没有附加收费等其他隐藏收费,是完全免费且开源的壁纸软件,,可以让世界各地人民都用上心怡的壁纸,解决各大壁纸软件收费搞,收费贵,隐藏消费高的缺点。

4.4灵活的裁剪功能

​ 用户可以自主决定保留图片的部分还是全部,可以重新构图亦或者叠加等等操作,更具个性化和灵活性。用户也可以选择自己制作喜爱的壁纸上传,我们更具有万千模版供给用户选择。

4.5壁纸预览功能

​ Android焕壁提供壁纸预览功能,节省用户时间软件自带的预览功能,省去了跳转到系统设置的时间,快速确认壁纸是否符合自己的心意。

结语

​ 一张壁纸,一低头看见小小一方天地间樱花花瓣漫天飞舞,可以带你走出此身正做的格子间,逃离窗外的阴霾天里看到不一样的风景。在信息爆炸的现代世界挑选一张合适的壁纸并不困难,但随时可以选择符合心意壁纸却又不太容易,我们小组所设计的 Android焕壁正是为了给每一位用户提供合适壁纸选择的壁纸软件。我们不仅仅局限于免费这一个特点拥有超大的无版权图片库,以及按风格,系统契合程度等各种帮助用户挑选的筛选条件,只为每位用户提供一个完美的壁纸体验。