Android悬浮框应用--悬浮笔记

本文介绍了一个Android悬浮笔记应用的开发过程,包括入口悬浮框、输入悬浮框、后台Service和MainActivity的实现。讨论了如何通过Service监听屏幕状态,并探讨了应用的优化方向,如降低资源消耗、增加功能和存储优化。
摘要由CSDN通过智能技术生成
             悬浮框,顾名思义就是悬浮在手机界面的View,它可以存在于相对手机屏幕的某个位置,而与手机界面呈现第几屏,呈现什么内容无关。这就使得 悬浮框应用为我们的app使用方便了不少,比如LAS。下面以一个应用为例,来记录与大家分享悬浮框的基本开发方法。

在手机阅读的时候,如果读到精彩的句子想把它记录下来过后慢慢品位;可能突然想到某件重要的事情,而又觉得划屏找便签类应用不太方便;又或者,你突然需要很方便的记录一些重要的数据,像电话号码......这个时候我们即将要开发的app或许可以派上用场,那就是一个简易的悬浮笔记。首先我们实现悬浮笔记的主要功能:记录内容、处理内容。先看下效果图:


它的结构比较简单,由如下四个部分构成:


1.入口悬浮框:悬浮于界面上的占用空间比较小的View,命名为FloatSmallView,点击即可开启输入悬浮框;

2.输入悬浮框:跟小悬浮框同级的FloatBigView,当点击FloatSmallView的时候弹出FloatBigView,即可进行记录;

3.后台Service:用于管理悬浮框的位置、大小悬浮框的切换、以及相应的逻辑处理;

4.MainActivity:我们在FloatBigView中记录的内容就会被保存,可以通过该Activity来查看、编辑,启动Service。

从程序的入口MainActivity开始,先贴代码:

<span style="font-size:18px;">public class MainActivity extends Activity implements View.OnClickListener{

	private EditText content;                           //记录内容
	private Button firstButton,secondButton,thirdButton;//悬浮窗开启模式选择
	private SharedPreferences sp;			    //保存记录的内容
	private int type = 0;				    //记录模式,默认为0
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		firstButton = (Button) findViewById(R.id.only_home);
		secondButton = (Button) findViewById(R.id.only_weixin);
		thirdButton = (Button) findViewById(R.id.all);
		content = (EditText) findViewById(R.id.content);
		
		firstButton.setOnClickListener(this);
		secondButton.setOnClickListener(this);
		thirdButton.setOnClickListener(this);
		
		sp = getSharedPreferences("FloatNote", MODE_PRIVATE);
		content.setText(sp.getString("note", ""));
		content.setSelection(content.getText().toString().length());//设置光标在文字末尾
		
	}

	@Override
	public void onBackPressed() {  //退出时保存编辑的内容
		Editor editor = sp.edit();
		editor.putString("note", content.getText().toString());
		editor.commit();
		super.onBackPressed();
	}

	@Override
	public void onClick(View v) {
		switch(v.getId()){
		case R.id.only_home:
			type = Constant.ONLY_HOME;
			break;
		case R.id.only_weixin:
			type = Constant.ONLY_WEIXIN;
			break;
		case R.id.all:
			type = Constant.ALL;
			break;
		}
		Intent intent = new Intent(MainActivity.this, FloatWindowService.class); 
		intent.putExtra("type", type);
		startService(intent);  
		finish();  
	}
	
}</span>

从中可以看出来,MainActivity的布局很简单,这里为了方便操作,内容是存入SharedPreference的,读出来放入EditText,查看编辑处理。可以采用SQLite存储内容,可以加上分类、提醒等功能。上面三个按钮分别对应于三种模式的悬浮框,这里我设计的三种悬浮框:1.仅仅是Home的时候出现悬浮框,当开启任何应用,悬浮框就会消失;2.仅仅微信浏览内容的界面开启,这只是一个例子࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值