Toast 自定义显示位置,toast和通讯录的a-z 一起走 部分代码

Android逆向开发:从工具链到合规实践的技术解析与安全边界 Android逆向工程是一种通过反编译、调试和动态分析等技术手段,对已编译的APK应用进行解构与分析的方法。其核心原理在于深入理解Android运行时环境、DEX文件结构及系统调用机制,从而还原代码逻辑、追踪数据流并分析通信行为。这项技术的核心价值在于安全研究、漏洞挖掘、恶意软件分析与应用加固设计,是构建深度防御体系的关键能力。在实际应用场景中,它广泛应用于移动应用安全评估、竞品技术调研与隐私合规检测。本文聚焦于Android逆向开发中的核心工具链配置,详细解析了Apktool、Frida、jadx等关键工 阅读详情
Toast的显示位置可以我们自己设置,通过如下命令:
toast = Toast.makeText(getContext(), "" + (char) ('A' + position),Toast.LENGTH_SHORT);
//可以控制toast显示的位置
toast.setGravity(Gravity.LEFT, xoffset, yoffset);
toast.show();

同时我们通过toast.cancle()可以用来取消一个toast,这在我们滑动到下一个字母的时候,就可以取消掉上一个字母的显示。
if(toast!=null)toast.cancel();


package com.zqxue.Review151222;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

/**
 * Created by XUE on 2015/12/22.
 */
public class SimpleView extends LinearLayout {
    private Paint paint;
    private float stopY;
    private Toast toast;

    public SimpleView(Context context) {
        super(context);
    }

    public SimpleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);

    }

    public void init(Context context,AttributeSet attrs){
        paint = new Paint();
        paint.setColor(Color.RED);

        for (int i = 0; i < 26; i++) {
            TextView textView = new TextView(context);
            String text = Character.toString((char)('A'+i));

            textView.setText(text);
            ViewGroup.LayoutParams layoutParams = new LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    0,
                    1
            );
            textView.setLayoutParams(layoutParams);

            //textSize
            int height = getHeight();
            int textSize = height/26-2;

            textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, textSize);
            textView.setGravity(Gravity.RIGHT);
            addView(textView);
        }
    }

    private int currentPosition=-1;
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        boolean ret = false;
        int action = event.getAction();
        float ex = event.getX();
        float ey = event.getY();
        stopY=ey;
        int position = -1;
        String type = "";
        switch (action){
            case MotionEvent.ACTION_DOWN:
                type ="DOWN";
                currentPosition=-1;
                //toast
                if(toast!=null)toast.cancel();
                toast = Toast.makeText(getContext(), "" + (char) ('A' + position),
                        Toast.LENGTH_SHORT);
                Log.d("151222MY","LONG="+Toast.LENGTH_LONG+"  SHORT="+Toast.LENGTH_SHORT+ ex+""+ey);
                //可以控制toast显示的位置
                //toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2);
                toast.setGravity(Gravity.LEFT, getWidth() - 150, (int) ey - getHeight() / 2);

                toast.show();
                ret=true;
                break;
            case MotionEvent.ACTION_MOVE:
                int childCount = getChildCount();
                for (int i = 0; i < childCount; i++) {
                    View child = getChildAt(i);
                    int top = child.getTop();
                    int left = child.getLeft();
                    int right = child.getRight();
                    int bottom = child.getBottom();
                    if(top<=ey&&left<=ex){
                        if(right>=ex&&bottom>=ey){
                            position = i;
                        }
                    }
                    if(position>-1&&currentPosition!=position){
                        Log.d("151222MY","click "+position);
                        Log.d("151222MY","click"+(char)('A'+position));
                        currentPosition=position;
                        if(toast!=null)toast.cancel();
                        toast = Toast.makeText(getContext(), "" + (char) ('A' + position),
                                Toast.LENGTH_SHORT);
                        Log.d("151222MY","LONG="+Toast.LENGTH_LONG+"  SHORT="+Toast.LENGTH_SHORT);
                        //可以控制toast显示的位置
                        //toast.setGravity(Gravity.LEFT, right + child.getWidth() + 200, bottom - getHeight() / 2);
                        toast.setGravity(Gravity.LEFT, getWidth()-150, (int)ey - getHeight() / 2);

                        toast.show();
                    }
                }
                type="MOVE";
                break;
            case MotionEvent.ACTION_UP:
                type="UP";
                break;
        }
        //Log.d("151222MY", type);

        return ret;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawLine(0, 0, 300, stopY, paint);
        Log.d("151222MY","onDraw");
    }
}
华为OD机试2025C卷-双十一最大花费金额[100分](Java_Python3_C++_C语言_JsNode_Go)实现100%通过率 双十一最大花费金额 - 动态规划解法 摘要:本文介绍了华为OD机试中"双十一最大花费金额"问题的动态规划解法。该问题要求在给定N件商品价格和优惠券面额X的情况下,选择若干商品使总花费不超过X且尽可能大。核心解法采用布尔型动态规划数组,记录每个金额是否可被拼出。算法时间复杂度为O(N*X),空间复杂度为O(X)。通过倒序遍历避免重复选择同一商品,最后从X向下查找第一个可达金额作为答案。文中提供了C++和Java的实现代码,并解释了与经典0-1背包问题的关系。 关键点: 问题本质是0-1背包/子集和问题的变体 阅读详情

相关推荐

Java实现双色球&大乐透随机选号算法——原理详解与代码实战

掌握核心语法:集合操作、随机数生成、排序。贴近实际场景:将编程知识应用于生活问题的解决。

wangchl0932的博客 4983

Android系统架构与核心机制解析:从进程通信到界面渲染的底层原理

在移动开发领域,理解操作系统底层原理是构建高性能应用的关键。Android系统基于Linux内核,通过独特的进程间通信机制实现组件协作,其中Binder IPC作为核心通信框架,确保了跨进程调用的安全与高效。从系统架构分层到应用组件模型,深入掌握这些基础概念有助于解决内存泄漏、ANR等常见性能问题。在界面渲染层面,View的测量、布局、绘制流程与SurfaceFlinger的合成机制共同决定了应用的流畅度。本文聚焦Android系统核心机制,结合Binder通信与View绘制流程,剖析其设计原理与工程实践价

weixin_34414196的博客 420

用Simulink对Carsim车辆进行档位控制

用Simulink对Carsim车辆进行档位控制一、carsim中的档位设置为开环控制二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear三、双击进去设置常量为 0四、输入和输出IO通道五、验证 :输入 为 3 档 ----- 输出 为 3!六、参考 一、carsim中的档位设置为开环控制 二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear 三、双击进去设置常量为 0 四、输入和输出IO通道 五、验证 :输入 为 3 档 -

qq_42027654的博客 2602

安卓自定义Toast,调整Toast位置大小等的方法

安卓自带的 Toast 其实还是不错的,但是,不折腾一下怎么能显示出我们的与众不同呢。所以,让我们先看一下默认的 Toast 长什么样。 圆角,灰底白字,个人感觉还是不错的,都是一种形势,难免有些单调。 xml 文件如下:<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.and

fengyucoder的博客 6831

2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(3卷)解析

我们先绘制题组中所有设计图我这边作图用的国内的在线作图工具。

2301_76737000的博客 5419

PyTorch ModelNet点云数据集加载实战:从下载到Dataset类完整实现

在三维视觉与点云处理领域,数据集是算法研发的基石。ModelNet作为三维物体分类的基准数据集,其地位类似于图像领域的MNIST,是入门和评估模型性能的通用标准。理解其数据格式与加载原理,是进行点云分类、分割等任务的关键前置步骤。通过PyTorch的Dataset类,开发者可以构建高效的数据管道,将原始点云文件转换为神经网络可直接处理的张量格式,这一过程涉及数据采样、归一化、特征组装等核心操作,直接影响模型的训练效率和最终性能。本文聚焦于ModelNet10/40数据集,详细解析其目录结构,并提供一套稳健的

weixin_29032337的博客 283

Toast的高级自定义方式-循序渐进带你了解toast

写在前面 对于Toast的使用,相信只要是使用过android的童鞋都不会陌生,它是不需要和用户进行交互的一个提示框。接下来,让我们一步步自定义Toast,全方位的玩转Toast,实现它的不同显示需求。从此再也不怕提示的各种变态需求。~ 先来看看效果图,苦逼的华为手机,4.4版本,没root,只能连上电脑,再通过录制电脑屏幕上的手机画面录屏,求推荐好方法录屏。~ 1.最基本的Toast Toa...

ChineseHW的博客 833

c语言版数据结构课程设计 学生成绩管理系统

此学生成绩管理系统完成15项功能,是我经过很多次的修改得到的。花费时间不短,功能齐全,主要完成了:输入,输出,插入,修改,删除,查询,读取文件,写入文件,复制文件,建立索引,显示各种情况下的信息,追加学生信息等等功能。一共15项。   代码如下: // shujujiegou.cpp : 定义控制台应用程序的入口点。///**本程序采用数组链表形式,原因:数组查询速度快,数组也能实现动态存储

Java 1万+

android Toast 弹出在屏幕中间位置以及自定义Toast

Toast 我想我们应该使用的都很多,一般我们使用默认设置较多,但是默认设置往往不能满足我们的需求,那我们现在来自定义下:默认Toast:Toast.makeText(MainActivity.this,"点击按钮",Toast.LENGTH_SHORT).show();设置Toast位置:          通过setGravity设置Toast位置,可以是  Gravity.CENTER:中间...

shanshan_1117的博客 2万+

MATLAB 论文复现——含氢综合能源系统多目标最优折中分布鲁棒低碳调度

提出基于多目标决策理论和逼近理想解排序技术,构造综合考虑系统调度的经济性、低碳性和鲁棒度的多目标最优折中函数,从而建立含氢综合能源系统多目标最优折中分布鲁棒低碳调度模型,可快速准确地获得兼具经济性、低碳性和鲁棒性的含氢综合能源系统优化调度方案。[1]孙惠娟,胡紫平,彭春华,等.含氢综合能源系统多目标最优折中分布鲁棒低碳调度[J/OL].电力自动化设备,1-13[2024-07-26].https://doi.org/10.16081/j.epae.202406003.关键词: 综合能源系统;

sjr1478的博客 410

LabVIEW波形图表时间轴设置:三种方法实现横坐标显示日期时间

在数据采集与设备监控场景中,波形图表的横坐标默认显示采样点序号而非日期时间,这给工程师分析历史数据带来不便。理解时间标识(Timestamp)的本质——一个自1904年起算的双精度秒数,是解决问题的关键。时间轴设置既是显示格式问题,更是数据层与显示层的协同设计。通过属性节点动态生成刻度标签、将时间标识数组直接作为X轴数据、或使用波形数据(Waveform)类型绑定t0与dt,分别适用于固定点数显示、非等间隔事件记录和等间隔连续采样等不同需求。合理选择方案并注意缓冲区预分配与时间连续性处理,可让波形图表准确呈

weixin_33416697的博客 254

Toast自定义位置

http://blog.sina.com.cn/s/blog_53a99cf30102xoav.html

weixin_51022898的博客 397

科研绘图系列:R语言绘制差异蝴蝶图(Butterfly Chart)

科研绘图系列:R语言蝴蝶图(Butterfly Chart)

专注生信领域 1391

自定义toast(给toast指定布局和显示位置)

private void showDiyToast(Context context) { Toast toast = new Toast(context);//创建一个Toast示例 toast.setDuration(Toast.LENGTH_SHORT);//设置toast显示的时长 View layout = View.inflate...

yinzhijiezhan的专栏 1961

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

2. 做一个极简 UI 库之Toast 组件

这里主要是对于 vue 的render的运用。然后还可以学到这个类型处理的方法。当然了我走过的坑小伙伴们就别再走一次了整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

小陈的博客 844

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

自定义Toast的位置

Toest常用方法Toest.makeText(content,text,duration);toest.setDuration(duration);设置持续时间toest.setGravity(gravity,xoffset,yoffset)设置位置toest.setText(s)设置提示内容toest.show()//展示...

u010207898的博客 803

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Android基础#7: Toast工具类的实现,以及设置Toast文字居中显示

Android App开发过程中,Toast默认的显示方式是在屏幕的底部,但是,有时候,感觉文字显示在屏幕中间比较美观。本篇实现的功能是:让Toast文字可以根据不同的参数,来显示在屏幕中间,靠上或靠下,从而满足App的需求。

记录和分享程序人生的点点滴滴 4233

Toast 位置的改变 和 Toast的简单用法

Toast是Android中用来显示显示信息的一种机制 Toast 的使用可以说是简单方便 常用的就是Toast.makeText(context, text, duration).show(); 先对里面的三个参数说一下吧, 第一个context,我们可以写成this ,这个this是activity的上下文 当然可以写成Activity.this 这个也是指的上下文,可以理解co

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1399

flutter Toast消息提示框

在 flutter 跨平台开发中,使用 Dart 实现 Toast 消息提示框效果,以及使用Overlay与OverlayEntry实现表层浮动 widget

代码小疯子 1万+

自定义Toast之类(悬浮窗)的坐标位置偏差以及显示时长

在学习自定义Toast时想让其在一个预定的位置时,设置x,y后,发现跟预期的不符和。搞了半天才发现原来是从params.gravity = Gravity.LEFT + Gravity.BOTTOM;定义的位置开始偏移(即原点)。 WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.heig

萌萌新的小菜鸟 882

vant中toast层级改变

1、toast在main.js中引用 2、在每个页面中使用toast 3、每个页面有一个私有样式scoped,因此类名inexa的层级写在app.vue里 注:toast每调用一次(z-index)层级就会加一,因为默认打开了新窗口,层级会加一 ...

qq_42859450的博客 2969

更改默认的Toast消息颜色、背景、位置

Toast的使用

abcndy的博客 3918

vant toast 指定挂载到指定位置_Windows10指定应用程序安装的位置

在以前的Windows版本中,当你安装应用程序时,它的默认安装位置通常是在C:盘。而C盘作为系统盘,大多数人并不愿意程序直接安装在C盘中,所有需要在安装的过程中手动自定义安装路径。 现在在Windows 10中,你现在可以默认将新的Windows应用程序安装到指定的盘符,并且你还可以使用外部硬盘或者U盘,甚至可以安装到你的SD卡,USB驱动器或USB闪存驱动器中。此时Windows将在你选择作为默...

weixin_39636850的博客 612

更改Toast显示位置的技巧

根据应用程序布局的不同,我们可能需要将Toast显示在其他位置,比如,在指定视图的顶部显示一个Toast。

黄飞的专栏 3753

android Toast 自定义显示位置 custom position

Toast toast = Toast.makeText(this, "toast content here", Toast.LENGTH_SHORT); // or something alike toa...

cilei2920的博客 341
上一篇: IDEA 百度SDK 的安装配置
下一篇: Android Thread第二次Thread.start()报错的疑问
千雅爸爸
博客等级 码龄18年 292粉丝 639原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值