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属性去除,然后再输入,举例如下 /** * 输入开始日期 ...
随机推荐
- Try-Catch无法正确定位异常位置,我推荐2个有效技巧
宇宙第一开发IDE Visual Studio的调试功能非常强大,平常工作debug帮助我们解决不少问题.今天分享两个异常捕获的技巧,希望能够帮助解决一些问题. 以下两种情况,我相信大家都会遇到过. ...
- acm数论之旅---扩展欧几里得算法
度娘百科说: 首先, ax+by = gcd(a, b) 这个公式肯定有解 (( •̀∀•́ )她说根据数论中的相关定理可以证明,反正我信了) 所以 ax+by = gcd(a, b) * k 也肯定 ...
- spring web 测试用例
spring web 测试有三种方式 1. 自己初始化 MockMvc 2.依赖@springbootTest 它会帮你生产 webTestClient ,只需自己注入即可. 3.启动的时候,不加载整 ...
- HDU 3081 Marriage Match II (二分+网络流+并查集)
注意 这题需要注意的有几点. 首先板子要快,尽量使用带当前弧优化的dinic,这样跑起来不会超时. 使用弧优化的时候,如果源点设置成0,记得将cur数组从0开始更新,因为有的板子并不是. 其次这题是多 ...
- Introducing .NET 5
Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5. This will be the n ...
- hadoop StandAlone环境搭建
1.准备一台服务器 192.168.100.100 2.提前安装jdk 3.hadoop运行服务 NameNode 192.168.100.100 SecondaryNameNo ...
- plus接口
//获取手机端本地文件路径 plus.io.resolveLocalFileSystemURL(url, success(e){ }, fail(e){ })
- ROM, RAM, NVRAM and Flash Memory on Cisco Routers
当谈到路由器有多少内存以及哪些内存做什么时,有时人们会感到困惑. 您应该熟悉4个内存术语,在升级路由器的IOS之前应检查其中2个. 这些是以下内容: ROM:ROM代表只读存储器. 它存储System ...
- EBCDIK,EBCDIC,ASCII,shift JIS間の変換
http://itdoc.hitachi.co.jp/manuals/3020/3020759580/G5950334.HTM#ID01056
- springboot 打包成jar
1.pom.xml配置 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins< ...