AndroidStudio 编辑面板中的各种文件快速在Project视图中选中(图片资源,java类,xml等)

新来一个项目,发现有不少界面,代码可以直接从旧的项目copy。在copy图片资源的时候,很蛋疼,打开xml布局,找到图片,点击打开,copy… paste… ??? 竟然无法粘贴到桌面! . 只能粘贴到可以编辑的word 文档,qq编辑框之类的地方。
这里写图片描述
这就坑爹了。 只好到Project视图中 浩如烟海的资源drawable目录中去找我那一个小小的.png。
虽然可以搜索,但是仍然很慢啊!
copy paste打法效率大打折扣。

当时项目beta版本工期紧,在AndroidStudio的Plugin 仓库中各种关键词搜索 Go To Project View ,Navigator to .., find in …啊等等,没找到想要的插件,只好作罢。

最近比较闲,打算自己动手丰衣足食。 花了3天off hours。搞定。。 最终只用了5行代码。

不过过程还是比较坎坷:

1.先百度,看了几个教程。发现基本都是新建一个action从 public void actionPerformed1(AnActionEvent e)这个方法入手。

新建action的时候会有groups选择。查阅文档了解到jetbrains 将 其Ide的各类菜单分类各种groups,旁边的actions是这一个groups中的一个选项。。 选择了哪个groups,通过anchor 指定位置,就会把你设置的按钮放置到哪。
这里写图片描述
比如我指定Navigator ,Anchor first,插件安装后就出现在了这里
这里写图片描述

AnActionEvent e 。类似于MotionEvent e。actionPerformed方法中获取事件e进行处理。
尝试在该方法中再次调用actionPerformed,运行插件,点击我设置的按钮FindInProjectView,果然出现了Stackoverflow。。无限递归。

鸿杨的开发Plugin教程中使用e.getData(PlatformDataKeys.EDITOR) ,通过PlatformDataKeys.EDITOR 这个 key值可以获得当前我选中的文本。

2 ok,开始尝试各种key能获取到的信息。各种debug,evaluate.evaluate是个好东西,可以尝试各种表达式的值。

仔细想想我的需求:
1首先必然要找到我选中的文件名
2.搜索到该文件
3.在project view中找到该文件并选中它。
是的,PlatformDataKeys.EDITOR 可以拿到选中的文本,那我就最简单的这一步开始,选中我要找的资源文件名,搜索。
这里写图片描述
翻jetbrains 的文档,发现他的文件组织形式有2种。

It supports two main types of indexes:

File-based indexes
Stub indexes

使用第一种。FilenameIndex.getFilesByName.. 查找bottom,竟然返回空。
果断evaluate 看一下FilenameIndex.getAllFilenames 返回结果。果然返回了一个巨大无比的数组,可是查找bottom 为何是空?
尝试 自己加了一个后缀 .png查找,果断找到了他。

剩下的就是跳转的问题了。猜到 ProjectView 应该是属于另外一个组件,使用PlatformDataKeys.CONTEXT_COMPONENT 这个key搜索一下,
Component component = e.getData(PlatformDataKeys.CONTEXT_COMPONENT);

String name = component.getName();
确实选中projectview时,可以拿到这个component的名字,选中其他组件时,显示的是其他组件的名字。然而怎么跳转?

PsiFile 各种尝试,发现有一个navigate(boolean var1)方法,咦~~ 这不就是navigate到这个文件的意思么 果断navigate( true)一个。发现确实是跳转了,但是是跳转到navigator bar 了。
线索中断…

第二天,忙完了又试了试,无意间发现每一个component都可以getInstance。果断尝试
ProjectView.getInstance(e.getProject()),发现有一个selectPsiElement方法
尝试之..ProjectView.getInstance(e.getProject()).selectPsiElement(filesByName[0], true);
完美。跳转了。

3.插件写完发布了,才发现.. tmd 原来跳转到navigator bar 再右键复制 就可以直接粘贴到桌面了。TMD 这真是一个悲伤的故事。

 but,也许快速跳转到project view 除了复制之外 还有别的用处呢。总之,下次还有需求起码可以快速开撸了~~

想想还是很开心呢~

项目Github 地址https://github.com/tmac1999/FindInProjectView 可以在这个地址下载jar包使用,也可以在android studio的Plugin 仓库里搜索FindInProjectView 安装。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是在Android Studio创建一个可以添加和删除任务的任务列表的步骤: 1. 打开Android Studio并创建一个新项目。 2. 在“Project面板,右键单击“app”文件夹并选择“New”>“Android Resource File”。 3. 在“New Resource File”对话框,输入“task_list”作为文件名,并将“Resource type”设置为“Layout”。 4. 点击“OK”创建任务列表XML文件。 5. 在XML文件添加一个RecyclerView元素来显示任务列表。RecyclerView是一种高效的列表控件,可以显示大量数据。 6. 在RecyclerView元素添加一个LinearLayoutManager元素。LinearLayoutManager是一种布局管理器,用于在RecyclerView显示列表项。 7. 在LinearLayoutManager元素添加一个TextView元素作为标题。标题将显示在列表顶部。 8. 在LinearLayoutManager元素下方添加一个FloatingActionButton元素。FloatingActionButton是一个圆形按钮,可以用于添加新任务。 9. 在FloatingActionButton元素下方添加一个RecyclerView元素。这个RecyclerView将用于显示任务列表的所有任务。 10. 在RecyclerView元素添加一个LinearLayoutManager元素,用于管理任务列表项。 11. 创建一个新的XML文件,名为“task_item”,用于定义任务列表项的布局。在这个XML文件,可以添加一个TextView元素和一个ImageButton元素。TextView元素用于显示任务的名称,ImageButton元素用于删除任务。 12. 创建一个Java,名为“Task”,用于表示一个任务。这个应该包含任务的名称和一些其他信息。 13. 创建一个Java,名为“TaskAdapter”,用于将任务列表显示在RecyclerView。这个应该扩展RecyclerView.Adapter,并实现必要的方法。 14. 在TaskAdapter,添加一个内部,名为TaskViewHolder。这个应该扩展RecyclerView.ViewHolder,并包含任务列表项的所有视图元素。 15. 在TaskAdapter,重写onCreateViewHolder方法以创建新的TaskViewHolder对象。 16. 在TaskAdapter,重写onBindViewHolder方法以将TaskViewHolder对象绑定到正确的任务对象。 17. 在TaskAdapter,添加一个方法,名为“removeTask”,用于从任务列表删除任务。 18. 在MainActivity,创建一个List<Task>对象,用于存储所有任务。 19. 在MainActivity,创建一个TaskAdapter对象,并将其设置为RecyclerView的适配器。 20. 在MainActivity,添加一个方法,名为“addTask”,用于将新任务添加到任务列表。 21. 在MainActivity,添加一个方法,名为“removeTask”,用于从任务列表删除任务。 22. 在MainActivity的onCreate方法,设置RecyclerView的布局管理器、适配器和点击事件监听器。 23. 在MainActivity,处理FloatingActionButton的点击事件,并调用addTask方法添加新任务。 24. 在TaskViewHolder,处理ImageButton的点击事件,并调用TaskAdapter的removeTask方法删除任务。 现在,您已经成功创建了一个可以添加和删除任务的任务列表!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值