gpt4 book ai didi

android - 如何在单击按钮时实现带有一些图像的小弹出窗口

转载 作者:行者123 更新时间:2023-12-03 23:13:59 25 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。


3年前关闭。







Improve this question




enter image description here

当用户单击三个蓝点按钮时,我想要一个这样的弹出窗口。如何在 android 中实现这种类型的弹出 View 。任何图书馆都可用。?

最佳答案

你可以使用这个库来实现你的目标看看这个

  • Android Tooltip library 1
  • Android Tooltip library 2
  • Android Tooltip library 3
  • Android Tooltip library 4

  • 如果你想创建你的自定义而不是使用下面的类
    创建一个这样的自定义类

    public class TooltipWindow {

    private static final int MSG_DISMISS_TOOLTIP = 100;
    private Context ctx;
    private PopupWindow tipWindow;
    private View contentView;
    private LayoutInflater inflater;

    public TooltipWindow(Context ctx) {
    this.ctx = ctx;
    tipWindow = new PopupWindow(ctx);

    inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    contentView = inflater.inflate(R.layout.tooltip_layout, null);
    }

    void showToolTip(View anchor) {

    tipWindow.setHeight(LayoutParams.WRAP_CONTENT);
    tipWindow.setWidth(LayoutParams.WRAP_CONTENT);

    tipWindow.setOutsideTouchable(true);
    tipWindow.setTouchable(true);
    tipWindow.setFocusable(true);
    tipWindow.setBackgroundDrawable(new BitmapDrawable());

    tipWindow.setContentView(contentView);

    int screen_pos[] = new int[2];
    // Get location of anchor view on screen
    anchor.getLocationOnScreen(screen_pos);

    // Get rect for anchor view
    Rect anchor_rect = new Rect(screen_pos[0], screen_pos[1], screen_pos[0]
    + anchor.getWidth(), screen_pos[1] + anchor.getHeight());

    // Call view measure to calculate how big your view should be.
    contentView.measure(LayoutParams.WRAP_CONTENT,
    LayoutParams.WRAP_CONTENT);

    int contentViewHeight = contentView.getMeasuredHeight();
    int contentViewWidth = contentView.getMeasuredWidth();
    // In this case , i dont need much calculation for x and y position of
    // tooltip
    // For cases if anchor is near screen border, you need to take care of
    // direction as well
    // to show left, right, above or below of anchor view
    int position_x = anchor_rect.centerX() - (contentViewWidth / 2);
    int position_y = anchor_rect.bottom - (anchor_rect.height() / 2);

    tipWindow.showAtLocation(anchor, Gravity.NO_GRAVITY, position_x, position_y);

    // send message to handler to dismiss tipWindow after X milliseconds
    handler.sendEmptyMessageDelayed(MSG_DISMISS_TOOLTIP, 4000);
    }

    boolean isTooltipShown() {
    if (tipWindow != null && tipWindow.isShowing())
    return true;
    return false;
    }

    void dismissTooltip() {
    if (tipWindow != null && tipWindow.isShowing())
    tipWindow.dismiss();
    }

    Handler handler = new Handler() {
    public void handleMessage(android.os.Message msg) {
    switch (msg.what) {
    case MSG_DISMISS_TOOLTIP:
    if (tipWindow != null && tipWindow.isShowing())
    tipWindow.dismiss();
    break;
    }
    }

    ;
    };

    }

    现在为此创建您的自定义布局,例如 tooltip_layout
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <ImageView
    android:id="@+id/tooltip_nav_up"
    android:layout_width="25dp"
    android:layout_height="25dp"
    android:layout_gravity="center"
    android:background="@drawable/nav_up" />

    <TextView
    android:id="@+id/tooltip_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/tooltip_bg"
    android:gravity="center"
    android:padding="10dp"
    android:text="Tooltip using PopupWindow:)"
    android:textColor="@android:color/white"
    android:textSize="20dp"
    android:textStyle="bold" />
    </LinearLayout>

    像这样创建一个可绘制文件 nav_up
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
    <rotate
    android:fromDegrees="45"
    android:pivotX="-50%"
    android:pivotY="80%"
    android:toDegrees="45" >
    <shape android:shape="rectangle" >
    <solid android:color="#000000" >
    </solid>

    <stroke
    android:width="2dp"
    android:color="#000000" />
    </shape>
    </rotate>
    </item>

    现在像这样使用这个工具提示
    TooltipWindow tipWindow = new TooltipWindow(MainActivity.this);
    @Override
    public void onClick(View v) {
    if (!tipWindow.isTooltipShown())
    tipWindow.showToolTip(v);
    }

    如有任何疑问,请咨询我

    关于android - 如何在单击按钮时实现带有一些图像的小弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44917557/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com