Android菜鸟日记24-android小技巧

 

Android菜鸟日记

24 android小技巧

 

用button控件实现按钮效果

 

Button控件例子

<Button android:id="@+id/bt1" android:layout_width="wrap_content"

android:background="@drawable/selector_button1"

android:layout_height="wrap_content" android:onClick="funClick" />

 

其中android:background="@drawable/selector_button1"

指向的是一个存在于 res/drawable文件夹下的selector_button1.xml文件

内容如下

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

 <item android:state_pressed="true"

 android:drawable="@drawable/d_start" /> <!-- pressed -->

<item android:state_focused="true"

 android:drawable="@drawable/start" /> <!-- focused -->

<item android:drawable="@drawable/start" /> <!-- default -->

</selector>

 

Selector为选择器 作为button控件的 的选择器

其中三个item为相对用的值。

三个item就不解释了 这个英语我都能看懂你们也应该能看懂

 

                                                                    

 

用android:onClick实现监听按钮点击

一般来说 view的监听都是 或得到view对象后给他设置监听器,以内部类的形式,首先 我很讨厌内部类,感觉复杂了代码。那么有些人就用view所在的activty去实现监听接口然后用activity来监听,我以前是这么做但是我学会了用android:onClick后我一般都是使用android:onClick方法。

还是Button控件例子[xx.xml(布局文件)中内容]

<Button android:id="@+id/bt1" android:layout_width="wrap_content"

android:background="@drawable/selector_button1"

android:layout_height="wrap_content" android:onClick="funClick" />

 

android:onClick="funClick"

这句话什么意思呢?

 

它指的是 当次button控件被点击

调用使用此布局文件[xx.xml]的activity的funClick方法。

 

注意:在activity中写funClick方法时.需要传入一个参数View v

funClick(View v){}

这是必须得 否则会报错。

public void funClick(View v) {

    int temp = v.getId();

 

    if (temp == R.id.bt1) {

       this.startActivity(new Intent(ShouYeActivity.this,

              OpticalRulerActivity.class));

    }

    if (temp == R.id.bt2) {

       this.startActivity(new Intent(ShouYeActivity.this,

              AboutActivity.class));

    }

    if (temp == R.id.bt3) {

       this.finish();

    }

}

当多控件使用统一按钮监听方法时需用v.getId(); 获得被点击控件的id号 根据ID号分辨被点击的控件。

 

 

用XML文件来写菜单栏menu

一般人写菜单栏是直接在activity 代码里面写。

如此每个activity都需要重复的写入onCreateOptionsMenu方法。

public boolean onCreateOptionsMenu(Menu menu) {

         menu.add(groupId, itemId, order, title);

       return super.onCreateOptionsMenu(menu);

}

这样的维护难度非常高。[当activity使用一样的menu,则需要每个修改]

 

那么如果使用xml来写的话 每次只需要修改xml文件 就可以做到使用此xml文件menu菜单同步被修改的效果。

代码如下

Menu的xml文件需要放在在res下menu文件夹(默认不存在需要自己创建) 其他名文件夹不行。其实你在RES下自己建立其他文件夹下放xml文件会被报下错。

Error in an XML file: aborting build.

 

Res/menu/menu.xml(文件名随意)

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <group android:id="@+id/group1">组id

       <item android:id="@+id/item1" android:orderInCategory="1"

           android:title="版本信息">

组内id,排序(注意排序是对整个menu来说的不考虑组问题),title

       </item>

       <item android:id="@+id/item2" android:orderInCategory="2"

           android:title="作者的话">

       </item>

    </group>

    <group android:id="@+id/group2">组id

……………………………

    </group>

 

</menu>

 

 

 Activity代码处

    // 菜单栏

    public boolean onCreateOptionsMenu(Menu menu) {

       // TODO Auto-generated method stub

       MenuInflater inflater = this.getMenuInflater();

因为是用资源文件来填充menu,所以需要在系统中获取到menu填充器(MenuInflater)

       inflater.inflate(R.menu.menu, menu);

用填充器对象的填充方法(inflate),传入参数 填充资源,填充对象

       return super.onCreateOptionsMenu(menu);

返回父类方法。

    }

 

 

Toast提示用户

Android提醒用户的方法不少比如dialog系列的东西,但是如果想让用户知道,又不需要他点击来继续的话(因为多次点击会降低用户体验),使用Toast(这个单词的意思是土司面包)

在activity下可以使用

 

Toast.makeText(this,"要显示的内容",Toast.LENGTH_LONG).show();

完整代码

 

Toast.makeText(Context ct,String title,Toast.LENGTH_LONG| Toast.LENGTH_SHORT)

这一段是对Toast设置text,Toast是android 自带的 不需要实例化直接Toast就可以用了。

 

.show();

这个很重要,执行这个的时候才把Toast执行在屏幕上。

 

 

 

 

 

RES文件夹下的3个图片文件夹


从文件名就能看出来hdpi ,ldpi,mdpi

对应 高 低 中dpi

一般来说我们只需要把文件放到hdpi文件目录下

就可以了,当遇到需要使用ldpi mdpi文件时,

Android会自动缩图(效果不好)

 

但是注意每个dpi文件夹下的icon.png需要自己重写。

否则就会在系统中看到很恶心的小绿人。

 

横竖屏,与全屏

 

横竖屏

在AndroidManifest.xml文件下的application 或者activity内写入下行代码实现横竖屏。

android:screenOrientation="landscape" 横屏,portrait竖屏

 

全屏

在AndroidManifest.xml文件下的application 或者activity内写入下行代码实现全屏。

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

 

关于设置全屏的还有另外一种设置风格(写风格xml文件)然后让activity或application调用的。

懒得手打了直接复制我ITEYE博客内容了

http://poolo.iteye.com/admin/blogs/1207642

消除标题栏


第一种:在AndroidManifest.xml文件中定义

  < application android:icon="@drawable/icon"

  android:label="@string/app_name"

  android:theme="@android:style/Theme.NoTitleBar">

  可以看出,这样写的话,整个应用都会去掉标题栏,如果只想去掉某一个Activity的标题栏的话,可以把这个属性加到activity标签里面

  第二种:这种在一般的应用中不常用,就是在res/values目录下面新建一个style.xml的文件

[放在其他文件下目录下不行,只有放在values下系统才会把style读进去 才能@来用]

  例如:

 

  < ?xml version="1.0" encoding="UTF-8" ?>

  < resources>

  < style name="notitle">

  < item name="android:windowNoTitle">true< /item>

  < /style>

  < /resources>
 

  这样,我们就自定义了一个style,就相当于一个主题,然后在AndroidManifest.xml文件中定义

  < application android:icon="@drawable/icon"

  android:label="@string/app_name"

  android:theme="@style/notitle">

  这样也可以达到去掉标题栏的效果

 

全屏的方法

 

 

 

  第一种

最简单 最方便 但修改麻烦

  android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

  第二种

稍微麻烦 但修改容易 只需要修改自己写的风格文件即可

自己写一个XML文件放在res/values文件夹下

xml文件内容

<?xml version="1.0" encoding="UTF-8" ?>  

<resources>  

<style name="fullscreem">  

<item name="android:windowNoTitle">true</item>  

<item name="android:windowFullscreen">true</item>  

</style>  

</resources>  
 

 

 最后添加 android:theme="@style/fullscreem"

 

 

关于系统出错

除了代码问题有时候考虑下是不是没有添加权限

在AndroidManifest.xml文件下的manifest下是否有添加权限

 <uses-sdk android:minSdkVersion="4" />

 <uses-permission android:name="android.permission.CAMERA" />

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

 

LogCat的使用

Mars视频讲了 我就稍微提下

1.将logCat添加到界面中

 

 

得到


 

 

 

2.LogCat的使用

在任意代码处可以写

Log.v("mytest", "Rid:" + Rid);

//String String 键值对

//第一个参数是Logcat TAG 也就是标签、识别符

//第二参数就是内容了

 

 当系统执行到这句的时候。就会在下面的

LogCat窗口显示。

但注意系统自带了N从里面找出你写的那个是个困难度非常大的事情。

所以点击需要把你自己写的筛选出来


点击

 

 

显示如下(我写的那个例子的log tag就是mytest)

 

 

同logCat 标签下可能有不同级别的提示

则靠点击来选择问题严重性

 显示全部问题

只显示log.e的问题

反正是按钮拿个按钮就显示那个按钮加它右边的所有。

比如按 那么显示的就是。

 

Log不仅只有log.v

还有Log.d   Log.i   Log.w   Log.i

 

小技巧:在系统出错的时候点击

Log的log标签(系统自带无法删除)


 

然后点击就能看到当前系统报错了。

 

使用DDMS时 经常会出现logCat不显示的问题,首先切到DDMS选择手机,如果还是没连接到得话[这时候你看DDMS那边手机的显示连接但看不到android版本号],解决办法是手机重新连接电脑。

 

先写这么多吧,以后想到再写,以上大多数是我自己的经验,可能有些不符合别人习惯但是我觉得挺好的。个人按照自己需求选择性学习。有更好的办法请使用更好的办法在写这篇文章的时候我还没想到更好的解决办法。

 

2011-10-23

poolo

 

mtk ipo document 立即下载

相关推荐

手把手教你用野火FPGA开发板资料包安装ModelSim 10.5se(附破解教程)

本文提供了一份详细的指南,手把手教你为野火FPGA开发板安装和配置ModelSim 10.5se仿真工具。内容涵盖从前期准备、软件安装、许可证激活(学习用途)到环境验证的全过程,并简要介绍了如何与Xilinx Vivado开发套件集成,帮助初学者快速搭建稳定的FPGA仿真环境。

lstm7chronicler的博客 250

MTK Android ipo唤醒失败

mtk ipo流程休眠通过powerkey长按弹窗点击standby进入,唤醒时通过长按powerkey唤醒 .powerkey: 使用PMIC的powerkey powerkey长按的时间是通过外部ic控制的,时长为1s 异常:休眠下去后长按powerkey发现机器无法唤醒: ...

lao_唐 博客 731

STM32H7 FOC控制时序优化与PWM中点更新策略

在永磁同步电机(PMSM)的磁场定向控制(FOC)系统中,控制时序精度是决定电流环带宽、观测器收敛性与动态响应能力的基础要素。其核心在于理解PWM生成、ADC采样与控制计算三者之间的硬件级时间耦合关系——尤其在中心对齐模式下,标准更新机制引入的半周期延迟会破坏电压-电流瞬时映射,导致滑模观测器失配与高频相位滞后。通过将PWM更新事件绑定至重复计数器(RCR)清零点,可实现控制指令在开关周期中点生效,使等效电压矢量中心与计算时刻严格对齐。该策略显著提升系统确定性,为20 kHz以上高频电流环提供物理支撑,并广

flink9streamer的博客 857

MTK Android 长按powerkey弹窗进入ipo_shutdown流程

跟踪长按powerkey弹窗后触发 mtk ipo的shutdown流程: 长按powerkey弹出以下窗口,点击Standby进入IPO shutdown流程 Step1: framework/base/services/core/java/com/android/server/policy/PhoneWindowManager.java powerLongPress() case LONG_PRESS_POWER_GLOBAL_ACTIONS ...

lao_唐 博客 701

OpenCV实战:高效检测与识别多类型条码与二维码

本文详细介绍了如何利用OpenCV的BarcodeDetector和QRCodeDetector模块,高效实现EAN-13条形码与常见二维码的检测与识别。内容涵盖从环境搭建、单码识别到处理多二维码的完整流程,并分享了提升识别率的图像预处理与性能优化等实战技巧,帮助开发者一站式解决视觉项目中的条码识别需求。

weixin_29094539的博客 493

KVNAND架构:解决边缘设备部署LLM的内存与带宽挑战

大语言模型(LLM)在边缘设备部署时面临内存容量和带宽限制的核心挑战。传统方案依赖DRAM存储KV缓存,导致高昂成本和性能瓶颈。闪存计算(IFC)通过计算单元下沉和流水线优化缓解部分问题,但仍受限于DRAM依赖。KVNAND架构创新性地将KV缓存直接存储在3D NAND闪存中,结合异构计算和页面级KV映射技术,显著降低延迟和能耗。该架构特别适用于长上下文场景,如文档分析和个人助理应用,能有效解决内存溢出(OOM)问题并提升计算单元利用率。关键技术包括头组并行(HG)执行和混合键合设计,为边缘AI部署提供了新

weixin_27215337的博客 320

android系统关机流程

android系统都有一个关机按键,长按这个按键系统会进行关机操作。具体实现流程如下: 在android层通过系统调用reboot(arg)调用内核中的sys_reboot,具体流程如下: reboot——>sys_reboot()——>kernel_power_off()——>machine_power_off()——>pm_power_off(); pm_power_off 是一个函数指

MyArrow的专栏 4863

Ubuntu22.04下ROS2与PX4仿真环境搭建全流程解析

本文详细解析了在Ubuntu22.04系统下搭建ROS2与PX4仿真环境的全流程,包括系统准备、ROS2 Humble安装、PX4飞控环境部署、ROS2与PX4通信桥梁搭建等关键步骤。针对常见问题提供了解决方案,并分享了性能优化和开发调试技巧,帮助开发者快速构建无人机仿真开发环境。

weixin_29248653的博客 607

Android广播知识详细解释

广播是Android四大组件之一(Activity、Service、BroadcastReceiver、ContentProvider),在开发中应用广泛,下面是开发过程中对广播相关知识的总结。 1、广播的原理 2、广播的注册 3、广播的分类 1、广播的原理 广播接收器有两个端,一个是发送端,一个是接受端,整个框架是订阅模式。当调用接口发送广播消息后,AMS会将该消息转发...

Frakie_Kwok的专栏 792

计算机网络简答题

协议定义了在两个或多个通信实体之间交换的报文格式和顺序,以及发送接收报文以及其他事件需要采取的操作。为。

m0_61636632的博客 1699

基于Cesium实现,动态水面+大坝排水动画

一、绘制面状水域,使用水波纹理,进行渲染,水体透明,可以看到底色。三、使用粒子系统,将喷泉改变方向,加上重力设置,实现排水动画。二、绘制线状三维体,用作模拟大坝拦截效果。四、最后,模拟水位上升,进行淹没分析,

一醉千秋的专栏 1418

android p 休眠唤醒杀进程白名单

休眠唤醒杀进程的白名单

zjy764219923的专栏 863

PCL SAC-IA 初始配准算法【2025最新版】

采样一致性初始配准算法,简称SAC_IA。博客长期更新,本文最新更新时间为:2025年1月1日。新增参数设置建议

点云侠的博客 37万+

细谈软件支付功能的实现----菜鸟日记

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33968104的博客 1200

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

团队项目需求分析

45度炸队项目需求分析 一、整体计划安排和明确里程碑 整体计划 截止时间 具体安排 10.27 最终版SRS《软件规格说明书》的撰写与全员基础安卓知识填充 11.5 架构设计与UI设计 11.14 编码与多重测试,并发布Alpha版本 11.23 用户体验计划,删改功能模块 11.24 深度DEBUG测试,发布Beta版本 12.8 正式版本的推送 ...

weixin_30483495的博客 112

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

菜鸡前端面试题整理日记

一直以来都有写点什么东西的想法,但又整天犹犹豫豫的,一会觉得准备不够充分,写的内容没什么质量,一会又觉得没什么内容可写的,以至于一拖再拖。万事开头难,难着难着就没有下面了,以此先开个头,记录自己的成长历程也是不错的,或许顺便还能帮上一些人呢。 分享个刚踏出校门的菜鸟所整理的前端面试题,当初被问到一时答不出来的问题,不会很详细和深入,对面试还是有点用的,仅供参考。 索引 1.事件冒泡、事...

dejk28162的博客 258

初入职场,以此纪念

时间过的可真快,转眼间我已经实习20来天了,2016年11月24号入职昂码信息,我怀着忐忑的心情来到公司报道,当然并不是我一个人,还有跟我一并通过面试的两个校友(两男生)。可能习惯了学生时代的生活,突然之间没人管,没人监督还挺不习惯的,虽然我自觉性还不错。

JustZona的博客 339

大学借书记录

今天看了看我大学的借书记录。也从侧面显示出了我大学都在学什么东西。看我大一时期还有心思看一看闲书。大二期末因为参加数学建模借了很多神经网络的书。大三考研没怎么借书。大四阅读的书就有点和专业贴边了。看了我有的书名,唯一贯穿借书记录的就是有关于ACM和算法的书,每年都会有,奈何我的算法长进却是很小。在此把这个书单分析出来,共勉。ps 所有的东西都是倒序排列的(最后借的书序号为1)。后面的时间就是我借书

bleuesprit的专栏 2025

从 WAIC 2026 打开人工智能:一部正在发生的科技史诗

2026年7月17日到20日,上海世博展览馆。1100多家企业、3000多项展品、300多款全球首发——第九届世界人工智能大会(WAIC 2026)又一次把全球AI圈的目光拉到了黄浦江畔。但这次不一样:机器人不再只是在玻璃柜里挥挥手,而是真的在展馆里走楼梯、搬箱子、给你倒咖啡。AI也不再只是聊天机器人,而是能自己规划任务、调用工具、给你交活的"数字员工"。本文以WAIC 2026为窗口,倒带70年,聊聊AI是怎么从一群人的异想天开,变成改变世界的力量的。

weixin_72753562的博客 352

IPO的条件与要求

IPO是指一家企业或公司 (股份有限公司)第一次将它的股份向公众出售(首次公开发行,指股份公司首次向社会公众公开招股的发行方式)。申请IPO的公司必须为股份有限公司,有限责任公司在申请IPO之前,应先变更为股份有限公司。除此之外。申请IPO上市还需要哪些条件与要求呢? 公司上市IPO的主体条件 1、发行人应当是依法设立且合法存续的股份有限公司。经国务院批准,有限责任公司在依法变更为股份

少年休闲海 7751

IPO问题(java实现)

package class_07; import java.util.Comparator; import java.util.PriorityQueue; /** * IPO问题 * * 输入: * 参数1,正数数组costs * 参数2,正数数组profits * 参数3,正数k * 参数4,正数m * costs[i]表示i号项目的花费 profits[i]表示i...

JZ 1779

[Android6.0][MTK6737] 长按 Power 没有真正关机 (MTK IPO 功能)

Hardware:MT6737 DeviceOS:Android6.0 Kernel: Linux3.18 HostOS: Ubuntu16.04 需求 正常开机 45s. 长按 Power 键进行关机后, 在 5s 内立即按住 Power 键进行开机 虽然会正常出现开机动画, 但是会继续之前退出时的状态. 比如正在放歌, 关机, 立即开机, 会出现开机动画, 但是在开...

Younix凌乱的草稿本 2070

Android快速开关机

6592项目中,Settings的辅助功能里面有快速开关机项,因项目需求,需要将该模块去掉。所以就花了半早上看了一下。 1)首先是需要把界面显示去掉,AccessibilitySettings.java中去掉该CheckBoxPreference,然后通过Settings.System.putInt(getContentResolver(), Settings.System.IPO_SETTIN

niexu19900104的专栏 4248

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 158

成为全栈·基础补充·Nginx 入门:反向代理与静态托管

Nginx 可以托管前端静态文件,也可以作为反向代理把 HTTPS 请求转给内部 API。本文从请求路径讲起,解释反向代理、静态目录、代理头、路径拼接、可信 IP、Cookie、上传体积、超时和缓存边界,并提供配置结构示例和逐层排查顺序。配置片段需要结合实际证书、路由和运行平台验证,不能直接复制为生产方案。

FungLeo's Blog 290

Android 开发入门实践(二):Kotlin 空安全,从可空类型到安全访问

延续 NewsApp 项目中的新闻标题练习,记录 Kotlin 安全调用。

Easyhood的博客 276
上一篇: Android 中全屏、取消标题栏
下一篇: Android菜鸟日记25-android反编译
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值