Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否可以将活动转换为浮动窗口?

是否可以将活动转换为浮动窗口?
EN

Stack Overflow用户
提问于 2018-09-03 06:03:11
回答 2查看 603关注 0票数 0

我知道浮动窗口是服务...但是,有没有办法将活动/片段转换为浮动窗口呢?

我的FloatingWindow示例代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class FloatingWindow extends Service{
WindowManager wm;
LinearLayout ll;

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();

    wm = (WindowManager) getSystemService(WINDOW_SERVICE);

    ll = new LinearLayout(this);
    ll.setBackgroundColor(Color.RED);
    LinearLayout.LayoutParams layoutParameteres = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.MATCH_PARENT, 400);
    ll.setBackgroundColor(Color.argb(66,255,0,0));
    ll.setLayoutParams(layoutParameteres);

    final WindowManager.LayoutParams parameters = new WindowManager.LayoutParams(
            500, 200, WindowManager.LayoutParams.TYPE_PHONE,
            WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
            PixelFormat.TRANSLUCENT);
    parameters.gravity = Gravity.CENTER | Gravity.CENTER;
    parameters.x = 0;
    parameters.y = 0;

    Button stop = new Button(this);
    stop.setText("Stop");
    ViewGroup.LayoutParams btnParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
    stop.setLayoutParams(btnParameters);

    ll.addView(stop);
    wm.addView(ll, parameters);

    ll.setOnTouchListener(new View.OnTouchListener() {
        WindowManager.LayoutParams updatedParameters = parameters;
        double x;
        double y;
        double pressedX;
        double pressedY;

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    x = updatedParameters.x;
                    y = updatedParameters.y;

                    pressedX = event.getRawX();
                    pressedY = event.getRawY();

                    break;

                case MotionEvent.ACTION_MOVE:
                    updatedParameters.x = (int) (x + (event.getRawX() - pressedX));
                    updatedParameters.y = (int) (y + (event.getRawY() - pressedY));

                    wm.updateViewLayout(ll, updatedParameters);

                default:
                    break;
            }

            return false;
        }
    });

    stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            wm.removeView(ll);
            stopSelf();
            System.exit(0);
        }
    });
}

@Override
public void onDestroy() {
    super.onDestroy();
    stopSelf();
}

所以我有一个活动,我想把它转换成一个浮动窗口服务......这有没有可能呢?请帮帮我......谢谢......

错误

On the line -在这里myview = li.inflate(R.layout.activity_customize, null); //你的布局

XML

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">


<android.support.design.widget.AppBarLayout
    android:id="@+id/actionBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/black">

        <TextView
            android:textColor="@color/white"
            android:textSize="20dp"
            android:text="Customise"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />


    </android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>

<ScrollView
    android:layout_below="@+id/actionBar"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/black"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        android:layout_below="@+id/actionBar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:id="@+id/color"
            android:paddingVertical="10dp"
            android:paddingHorizontal="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <TextView
            android:textSize="25dp"
            android:layout_centerVertical="true"
            android:textColor="@color/white"
            android:text="Color"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>

        <RelativeLayout
            android:id="@+id/font"
            android:paddingVertical="10dp"
            android:paddingHorizontal="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:textSize="25dp"
                android:layout_centerVertical="true"
                android:textColor="@color/white"
                android:text="Font"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>

        <RelativeLayout
            android:id="@+id/size"
            android:paddingVertical="10dp"
            android:paddingHorizontal="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:textSize="25dp"
                android:layout_centerVertical="true"
                android:textColor="@color/white"
                android:text="Size"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />
        </RelativeLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>

这是我的项目中最简单的活动,所以我尝试了一下

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-03 06:08:45

您必须在service中膨胀UI

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
View myview;

li= (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
   wm = (WindowManager) getSystemService(WINDOW_SERVICE);
    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
            //WindowManager.LayoutParams.TYPE_INPUT_METHOD |
            WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,// | WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
            WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
            PixelFormat.TRANSLUCENT);

     /////////////////////////Another params


WindowManager.LayoutParams params = new WindowManager.LayoutParams(
           WindowManager.LayoutParams.WRAP_CONTENT,
           WindowManager.LayoutParams.WRAP_CONTENT,
           WindowManager.LayoutParams.TYPE_PHONE,
           WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
           PixelFormat.TRANSLUCENT)

    params.gravity = Gravity.RIGHT | Gravity.TOP;
    myview = li.inflate(R.layout.xyz, null); // your layout here    

    wm.addView(myview, params);

用于添加一些cliclListener

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ImageView playButton = (ImageView) myview.findViewById(R.id.play_btn);
playButton.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
       Toast.makeText(FloatingViewService.this, "Playing the song.", Toast.LENGTH_LONG).show();
   }
});

//change this as your per your requirement

希望这能解决你的问题

票数 1
EN

Stack Overflow用户

发布于 2018-09-03 08:25:21

下面的代码将启动一个带有布局的服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val layoutInflater = LayoutInflater.from(applicationContext)
if (layoutInflater != null) {
    view = layoutInflater.inflate(R.layout.service_floating_windows, null, false)

    wm!!.addView(view, parameters)

    touchMovementOfTheFloatingWindow(parameters)
}

设计你想要展示的布局。然后从任何地方启动您的服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Asd : Service() {
private var wm: WindowManager? = null
private var view: View? = null
override fun onBind(intent: Intent): IBinder? {
    return null
}

override fun onCreate() {
    super.onCreate()

    wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
    val parameters: WindowManager.LayoutParams
    val minHW = U.getScreenMinHW(this)

    parameters = if (Build.VERSION.SDK_INT > 25) {
        WindowManager.LayoutParams(
                minHW * 2 / 3, minHW * 2 / 3,
                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT)
    } else {
        WindowManager.LayoutParams(
                minHW * 2 / 3, minHW * 2 / 3,
                WindowManager.LayoutParams.TYPE_PHONE,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT)
    }

    parameters.gravity = Gravity.CENTER
    parameters.x = 0
    parameters.y = 100

    val layoutInflater = LayoutInflater.from(applicationContext)
    if (layoutInflater != null) {
        view = layoutInflater.inflate(R.layout.service_floating_windows, null, false)

        wm!!.addView(view, parameters)

        touchMovementOfTheFloatingWindow(parameters)
    }

}


private fun touchMovementOfTheFloatingWindow(parameters: WindowManager.LayoutParams) {
    view!!.setOnTouchListener(object : View.OnTouchListener {
        internal var updatedParameters = parameters
        internal var x: Double = 0.toDouble()
        internal var y: Double = 0.toDouble()
        internal var pressedX: Double = 0.toDouble()
        internal var pressedY: Double = 0.toDouble()

        override fun onTouch(v: View, event: MotionEvent): Boolean {

            when (event.action) {
                MotionEvent.ACTION_DOWN -> {
                    x = updatedParameters.x.toDouble()
                    y = updatedParameters.y.toDouble()
                    pressedX = event.rawX.toDouble()
                    pressedY = event.rawY.toDouble()
                }

                MotionEvent.ACTION_MOVE -> {
                    updatedParameters.x = (x + (event.rawX - pressedX)).toInt()
                    updatedParameters.y = (y + (event.rawY - pressedY)).toInt()

                    wm!!.updateViewLayout(view, updatedParameters)
                }

                else -> {
                }
            }

            return false
        }
    })
}


override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
    return Service.START_NOT_STICKY
}}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52143936

复制
相关文章
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
11.4K0
java map 转string_java-将Map <String,Object>转换为Map <String,String>
Map map = new HashMap(); //Object is containing String
全栈程序员站长
2022/08/25
12.3K0
这款软件可以将大脑活动实时呈现在网页上
处理过脑电数据的朋友肯定都听说过BCI2000,BCI2000是用于脑机接口(BCI)研究的通用软件系统。BCI2000包括软件工具,可以获取和处理数据,呈现刺激和反馈,并管理与机械臂等外部设备的交互。BCI2000是一个实时系统,可以将脑电图和其他信号与各种生物信号和输入设备(如鼠标或眼球追踪器)同步。它有几个模块来管理常用文件格式的数据导入和导出。BCI2000可以在大多数Windows系统上运行,源代码可以在大多数Windows机器上编译。
脑机接口社区
2023/02/14
9210
这款软件可以将大脑活动实时呈现在网页上
是否需要转方向 ?
这类问题没有标准的答案,每个人的理解也不一样,我写下的也只是我个人的想法,仅供大家参考。
五分钟学算法
2019/10/15
5810
使用 neovim 的浮动窗口让你再次爱上 fzf
fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。
用户1558438
2019/04/21
2.7K0
「Strve.js」可以将字符串转换为视图的JS库
Strve.js是一个可以将字符串转换为视图的JS库。这里的字符串指的是模板字符串,所以你仅需要在JavaScript中开发视图。Strve.js 不仅易于上手,还便于灵活拆装不同的代码块。
Vam的金豆之路
2021/12/01
2.1K0
「Strve.js」可以将字符串转换为视图的JS库
6 - 检测一个字符串是否可以转换为数字
1. 如何检测字符串是否为数字(数字和字母的混合形式) s1 = '12345' print('是数字: ', s1.isdigit()) print(int(s1)) 是数字: True 12345 s2 = '12345a' print('12345a是数字:', s2.isdigit()) print('12345a是字母数字混合形式:', s2.isalnum()) 12345a是数字: False 12345a是字母数字混合形式: True s3 = '12_345a' print('12_
ruochen
2021/05/22
4790
6 - 检测一个字符串是否可以转换为数字
将字符串转换为date类型_java字符串转date类型
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
14.1K0
java将字符串转换为json对象的方法_java jsonobject转string
在与服务器交互的时候,我们往往会使用json字符串,今天的例子是java对象转化为字符串,
全栈程序员站长
2022/11/08
21.2K0
将KITTI转换为PASCAL VOC
import os, sysimport globfrom PIL import Image # VEDAI 图像存储位置src_img_dir = "D:\dataset\cityscapes\leftImg8bit\\train\\zurich\\"# VEDAI 图像的 ground truth 的 txt 文件存放位置src_txt_dir = "D:\dataset\cityscapes\gtFine\\train\\zurich\\"src_xml_dir = "D:\dataset\citys
狼啸风云
2020/07/14
7340
基础学习python(3)活动是否开始
原题目是手动输入:星期、时间判断是否活动开始,我在想是不是能够自动获取时间判断是否活动开始
adventureisoutthere
2020/02/18
5500
基础学习python(3)活动是否开始
有没有一个在线工具可以将Python代码转换为Java代码?
Python和Java是软件开发行业中广泛使用的两种编程语言。两者都有自己的优点和缺点,适用于不同类型的项目。Python以其易用性和可读性而闻名,而Java以其健壮性和性能而闻名。
很酷的站长
2023/02/20
1.7K0
有没有一个在线工具可以将Python代码转换为Java代码?
python 将图片转换为txt
matinal
2023/10/13
3210
python 将图片转换为txt
将Windows日志转换为Syslog
无论是Unix、Linux、FreeBSD、Ubuntu,还是路由器、交换机,都会产生大量的日志,而这些,一般会以syslog的形式存在。在RFC 3164中定义了syslog是一种日志协议,syslog数据包的大小为1024字节,包含Facility, Severity, Hostname, Timestamp和Message信息。syslog服务器默认使用UDP 514号端口。简单的说,syslog可以告诉管理员:谁(Facility),什么时间(Timestamp),什么地方(Hostname)做了什
张善友
2018/01/29
5K0
Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui
参考链接:Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui: https://blog.csdn.net/bailichun19901111/article/details/105042145
forxtz
2020/10/10
8.4K0
Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui
判断窗口是否在当前虚拟桌面
IVirtualDesktopManager实例的IsWindowOnCurrentVirtualDesktop提供窗口是否在当前活动的虚拟桌面上。
Qt君
2023/03/17
1.3K0
判断窗口是否在当前虚拟桌面
Flex 可以拖出窗口的panel 拖动panel变为窗口
项目的需要,需要把Panel拖动,而且需要可以拖出窗口,变为独立的窗体。 众所周知,panel本来是不能拖出原来的窗体的。需要做成可以拖出去的,肯定只能用点小技巧。 我的做法是: 1、做一个透明window,只有灰色边框 2、拖动panel的时候显示这个window,并拖动这个window(panel实际上没有动过) 3、放开鼠标的时候,判断这个被拖的window的位置,如果在原窗口外就生成一个独立window~~~ demo见这里:拖动Panel变Window.rar 够无私奉献的啦~~附件是flash
用户1258909
2018/07/03
1.2K0
点击加载更多

相似问题

居中浮动窗口/活动?

10

将Q18.2转换为浮动

11

是否可以将空白活动转换为片段活动

20

如何将67转换为浮动等效?

24

可以将活动的Microsoft Word窗口转换为WPF窗口吗?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文