Android_实验小心得_持续补充中......
1、LineLayout布局控件宽度百分比显示
其中,宽度百分比 = 控件权重 / 所在parent中所有控件权重和
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
<Button
android:layout_width="0dp" //宽度为0dp
android:layout_height="fill_parent"
android:layout_weight="1" //设置权重
android:text="1"/>
</LinearLayout>
2、计算器回退键的实现
textView.setText(str.substring(0, str.length() - 1)); //在显示窗口设置为str字符串减一后子字符串
3、获取输入框字符串,根据内容实现加减乘除
private void getresult()
{ String exp=et_input.getText().toString(); //获取输入框字符串
if(exp==null||exp.equals(""))
{
return;
}
if(!exp.contains(" ")) //如果字符串不包换空格
{
return;
}
double result=0;
String s1=exp.substring(0,exp.indexOf(" ")); //String.indexOf(" ")获取String中第一个" "的位置,substring获取从0到indexOf位置的子字符串
String op=exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);
String s2=exp.substring(exp.indexOf(" ")+3); //获取从第一个空格加三个字符位开始到exp最后一个字符位的子字符串
if(!s1.equals("")&&!s2.equals("")) {
double d1= Double.parseDouble(s1); //将字符串转化为Double型
double d2 = Double.parseDouble(s2);
//强制类型转换 if (op.equals("+")) {
result = d1 + d2;
} else if (op.equals("-")) {
result = d1-d2;
} else if (op.equals("×")) {
result=d1*d2;
} else if (op.equals("÷")) {
if(d1==0)
{result=0;}else result=d1/d2;
}
if(!s1.contains(".")&&!s2.contains(".")&&!op.equals("÷")){
int r = (int)result;
et_input.setText(r + ""); //数字加空字符串组成新的字符串
}
else
{et_input.setText(result + "");}
}else if(!s1.equals("")&&s2.equals(""))
{
et_input.setText(exp);
}else if(s1.equals("")&&!s2.equals(""))
{ double d2= Double.parseDouble(s2);
if (op.equals("+")) {
result = 0 + d2;
} else if (op.equals("-")) {
result = 0 - d2;
} else if (op.equals("×")) {
result=0*d2;
} else if (op.equals("÷")) {
result=0;
}
et_input.setText(result + "");
}
else {
et_input.setText("");
}
}
4、EditText控件的常用属性
1、android:layout_gravity——设置控件显示的位置
默认top,还有bottom,center_vertical............
2、android:hin——设置提示文本
直接输入提示文字
3、android:textColorHint——设置提示文本的颜色
可以使用十六进制(可以直接在左边选择颜色),也可以在资源文件里设置好颜色值后通过id的形式引用
4、android:singleLine——设置单行输入
一旦设置为true,则文字不会自动换行。
5、android:capitalize ——设置英文字母大写类型。
设置如下值:sentences仅第一个字母大写;words每一个单词首字母大小,用空格区分单词;characters每一个英文字母都大写。
6、android:digits ——设置允许输入哪些字符。
如“1234567890.+-*/%\n()”
7、android:inputType——设置文本的类型
密码类型,数字类型(只能输入数字,并且会弹出数字的键盘),Email............
8、android:password ——密码,以小点”.”显示文本
9、android:phoneNumber ——设置为电话号码的输入方式。
10、android:editable ——设置是否可编辑。
如果为false的话仍然可以获取光标,但是无法输入。
11、android:autoLink=”all” ——设置文本超链接样式当点击网址时,跳向该网址
12、android:visibility——设置文本是否显示
gone(不显示也不占用位置),invisible(不显示但占用位置),visible(显示并占用位置)
13、获取EditText控件输入内容并转化为字符类型:EditText.getText().toString()
5、Intent
- Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的activity, service和broadcast receiver之间的交互。Intent这个英语单词的本意是“目的、意向、意图”。
- Intent是一种运行时绑定(runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内容选择适当的组件来响应
- activity、service和broadcast receiver之间是通过Intent进行通信的,对于向这三种组件发送intent有不同的机制:
- 使用Context.startActivity() 或 Activity.startActivityForResult(),传入一个intent来启动一个activity。使用 Activity.setResult(),传入一个intent来从activity中返回结果。
- 将intent对象传给Context.startService()来启动一个service或者传消息给一个运行的service。将intent对象传给 Context.bindService()来绑定一个service。
- 将intent对象传给 Context.sendBroadcast(),Context.sendOrderedBroadcast(),或者Context.sendStickyBroadcast()等广播方法,则它们被传给broadcast
Intent的相关属性:
- Intent由以下各个组成部分:
- component(组件):目的组件
- action(动作):用来表现意图的行动
- category(类别):用来表现动作的类别
- data(数据):表示与动作要操纵的数据
- type(数据类型):对于data范例的描写
- xtras(扩展信息):扩展信息
- Flags(标志位):期望这个意图的运行模式
Intet的公共的构造函数
(1)Intent():创建一个空的Intent
(3)Intent(String action):利用给定的操作创建一个Intent。
(4)Intent(String action, Uri uri):利用给定的操作为给定的Uri创建Intent
(5)Intent(Context packageContext, Class<?> cls):为特定的组件创建Intent。
(6)Intent(String action, Uri uri, Context packageContext, Class<?> cls):利用给定的操作和数据为给定的组件创建Intent
component(组件):目的组件
Component属性明确指定Intent的目标组件的类名称。(属于直接Intent)
如果 component这个属性有指定的话,将直接使用它指定的组件。指定了这个属性以后,Intent的其它所有属性都是可选的。
例如,启动第二个Activity时,我们可以这样来写:
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//创建一个意图对象
Intent intent = new Intent();
//创建组件,通过组件来响应
ComponentName component = new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(component);
startActivity(intent);
}
});
startActivityForResult、onActivityResult、setResult
startActivityForResult(Intent intent, int requestCode)
onActivityResult(int requestCode, int resultCode, Intent data)
setResult(int resultCode, Intent data)
在启动另外一个Activity的时候,使用startActivityForResult 的带参数跳转。
startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面
时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第
二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。
如下,mainActivity启动子Activity代码:
private static final int SUBACTIVITY1 = 1; btn1.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent = new Intent(MainActivity.this, SubActivity1.class);
startActivityForResult(intent, SUBACTIVITY1);
}
}); @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); switch(requestCode){
case SUBACTIVITY1:
if (resultCode == RESULT_OK){
Uri uriData = data.getData(); //解析Uri,获取其中传递的数据
textView.setText(uriData.toString()); //利用Uri再将数据转换为字符串类型
}
break;
case SUBACTIVITY2:
break;
}
}
SubActivity1代码:
final EditText editText = (EditText)findViewById(R.id.edit);
Button btnOK = (Button)findViewById(R.id.btn_ok);
Button btnCancel = (Button)findViewById(R.id.btn_cancel); btnOK.setOnClickListener(new OnClickListener(){
public void onClick(View view){
String uriString = editText.getText().toString(); //获取编辑框内容
Uri data = Uri.parse(uriString); //Data接收的Uri对象格式,所以要对字符串进行格式转化
Intent result = new Intent(null, data); setResult(RESULT_OK, result);
finish(); //表示调用子Activity完成,返回父级Activity
}
}); btnCancel.setOnClickListener(new OnClickListener(){
public void onClick(View view){
setResult(RESULT_CANCELED, null);
finish();
}
});
6、Android线程之Handler消息处理原理及应用
https://www.cnblogs.com/weimore/p/7860433.html
Android_实验小心得_持续补充中......的更多相关文章
- phpstorm 工具使用技巧(持续补充中。。。)
phpstorm 工具使用技巧(持续补充中...) 一.phpstorm大小写切换 1.选择要转换的目标字符串: //普通商家,普通折扣默认值'COMMON_DISCOUNT'=>10.00, ...
- SQL点点滴滴_聪明的小写法(持续更新中)
1.生成序列号 SELECT number + 1 ,number FROM master..spt_values WHERE type = 'P' ORDER BY number 说明: maste ...
- Js 过滤emoji表情...持续补充中..
原文来自: https://www.cnblogs.com/tsjTSJ/p/7065544.html 最全最详细的用JS过滤Emoji表情的输入 在前端页面开发过程中,总会碰到不允许输入框输入e ...
- 来自平时工作中的css知识的积累---持续补充中
① 现代浏览器中,<img>元素默认情况下底部会有空白,那么这个空白到底是从哪里来的? 解惑: method-one:猛戳 来自知乎的解答 method-two: 延伸阅读 what is ...
- 来自平时工作中的javascript知识的积累---持续补充中
① SeaJs和RequireJS最大的区别 解惑:来自豆友 ② javascript中如何判断undefined var exp = undefined; if (exp === undefined ...
- 我的web小游戏【持续更新中】
在谷歌浏览器中实测无问题.. 五子棋(双人对战):http://1.waymongame.sinaapp.com/wuziqi/wuziqi2.html 贪吃蛇:http://1.waymongame ...
- Django-rest-framework(八)使用技巧(持续补充中)
当viewset中,多个action对应了不同的serializers的时候 class UserView(viewsets.GenericViewSet): queryset = User.obje ...
- 剑指Offer——面试小提示(持续更新中)
(1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)假设在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中.面试官最关心的是应聘者的 ...
- selenium webdriver使用的一些小技巧(持续更新中)
1.开始结束时间只支持控件选择,不支持填写,怎么办? 如下图: 解决方案: 用javaScipt把开始结束时间的reaonly属性去除,然后再输入,举例如下 /** * 输入开始日期 ...
随机推荐
- XMPP详解
https://www.jianshu.com/p/84d15683b61e https://www.cnblogs.com/lurenq/p/7026983.html 1. xmpp简介 XMPP ...
- jmh 微基准测试
选择依据:对某段代码的性能测试. 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven ...
- MySQL 将字符串转换为数字
转载自:https://www.cnblogs.com/xiaoleiel/p/8316508.html 在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在 ...
- !important面试汇总啊
https://www.jianshu.com/p/feab89b88d6b https://juejin.im/post/5c64d15d6fb9a049d37f9c20#heading-57
- node.js express 中文参考手册
https://www.runoob.com/w3cnote/express-4-x-api.html 原文地址:https://www.zybuluo.com/bajian/note/444152 ...
- excel表格 函数功能
1.去重复 选中一个区域——>数据——>删除重复项 2.条件求和 按照条件筛选:筛选出一样的类目,将对应的值求和. =sumif(A$1:A$10,B2,C$1:C$10) A$1:A$1 ...
- 第二十九节: Asp.Net Core零散获取总结(不断补充)
1. IWebHostEnvironment获取常用属性 (1).获取项目的根目录 _env.ContentRootPath 等价于 Directory.GetCurrentDirectory() ( ...
- Website's Game source code
A Darkroom by doublespeakgames <!DOCTYPE html> <html itemscope itemtype="https://schem ...
- Python经典排序算法
https://www.cnblogs.com/onepixel/p/7674659.html这个文章很nice https://www.bilibili.com/video/av685670?fro ...
- Flask - 性能分析(Profiling,profiler,profile)
1. 疑问 @app.cli.command() @click.option('--length', default=25, help='Number of functions to include ...