悬浮框,顾名思义就是悬浮在手机界面的View,它可以存在于相对手机屏幕的某个位置,而与手机界面呈现第几屏,呈现什么内容无关。这就使得
悬浮框应用为我们的app使用方便了不少,比如LAS。下面以一个应用为例,来记录与大家分享悬浮框的基本开发方法。
从中可以看出来,MainActivity的布局很简单,这里为了方便操作,内容是存入SharedPreference的,读出来放入EditText,查看编辑处理。可以采用SQLite存储内容,可以加上分类、提醒等功能。上面三个按钮分别对应于三种模式的悬浮框,这里我设计的三种悬浮框:1.仅仅是Home的时候出现悬浮框,当开启任何应用,悬浮框就会消失;2.仅仅微信浏览内容的界面开启,这只是一个例子
在手机阅读的时候,如果读到精彩的句子想把它记录下来过后慢慢品位;可能突然想到某件重要的事情,而又觉得划屏找便签类应用不太方便;又或者,你突然需要很方便的记录一些重要的数据,像电话号码......这个时候我们即将要开发的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.仅仅微信浏览内容的界面开启,这只是一个例子