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属性去除,然后再输入,举例如下 /** * 输入开始日期 ...
随机推荐
- jQuery选择器的使用注意事项:
1. 选择其中含有特殊符号 W3C规范规定属性值中不能含有某些特殊字符,但在实际开发过程中,常遇到表达式中含有“#”或“.”等特殊字符的情况,如果按照普通的方式去处理就会出错,解决此类问题的方法就是使 ...
- C语言:将3*4矩阵中找出行最大,列最小的那个元素。-将低于平均值的人数作为函数返回值,将低于平均分的分数放入below数组中。
//将3*4矩阵中找出行最大,列最小的那个元素. #include <stdio.h> #define M 3 #define N 4 void fun(int (*a)[N]) { ,j ...
- C语言:去除一个字符串中所有的空格。-函数fun传入形参m,求t=1/2-1/3+1/4.....+1/m的值。-判断形参a指定的矩阵是不是“幻方“。
//函数fun功能:判断形参a指定的矩阵是不是“幻方“,若是返回1.(”幻方”:每列,每行,对角线,反对角线相加都相等) #include <stdio.h> #define N 3 in ...
- jmh 微基准测试
选择依据:对某段代码的性能测试. 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven ...
- Card Game for Three
Alice, Bob and Charlie are playing Card Game for Three, as below: At first, each of the three player ...
- 遍历 Map 的方式
今天获取到一个Map 集合,想循环遍历出内容,突然发现忘记如何遍历Map,平时用的太少. Map 集合的内容是 Key , Value 键值对形式存储 第一种是 for 循环遍历 Map<Str ...
- Python学习第二十二课——Mysql 表记录的一些基本操作 (增删改)
记录基本操作: 增:(insert into) 基本语法: insert into 表名(字段) values(对应字段的值): 例子1: insert into employee(id,name,a ...
- 【PAT甲级】1068 Find More Coins (30 分)(背包/DP)
题意: 输入两个正整数N和M(N<=10000,M<=10000),接着输入N个正整数.输出最小的序列满足序列和为M. AAAAAccepted code: #define HAVE_ST ...
- Chrome的一个问题
报错:Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extensi ...
- druid监控sql完整版
利用Druid实现应用和SQL监控 一.关于Druid Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系. D ...