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

  (2)Intent(Intent o):复制构造函数。

  (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_实验小心得_持续补充中......的更多相关文章

  1. phpstorm 工具使用技巧(持续补充中。。。)

    phpstorm 工具使用技巧(持续补充中...) 一.phpstorm大小写切换 1.选择要转换的目标字符串: //普通商家,普通折扣默认值'COMMON_DISCOUNT'=>10.00, ...

  2. SQL点点滴滴_聪明的小写法(持续更新中)

    1.生成序列号 SELECT number + 1 ,number FROM master..spt_values WHERE type = 'P' ORDER BY number 说明: maste ...

  3. Js 过滤emoji表情...持续补充中..

    原文来自: https://www.cnblogs.com/tsjTSJ/p/7065544.html 最全最详细的用JS过滤Emoji表情的输入   在前端页面开发过程中,总会碰到不允许输入框输入e ...

  4. 来自平时工作中的css知识的积累---持续补充中

    ① 现代浏览器中,<img>元素默认情况下底部会有空白,那么这个空白到底是从哪里来的? 解惑: method-one:猛戳 来自知乎的解答 method-two: 延伸阅读 what is ...

  5. 来自平时工作中的javascript知识的积累---持续补充中

    ① SeaJs和RequireJS最大的区别 解惑:来自豆友 ② javascript中如何判断undefined var exp = undefined; if (exp === undefined ...

  6. 我的web小游戏【持续更新中】

    在谷歌浏览器中实测无问题.. 五子棋(双人对战):http://1.waymongame.sinaapp.com/wuziqi/wuziqi2.html 贪吃蛇:http://1.waymongame ...

  7. Django-rest-framework(八)使用技巧(持续补充中)

    当viewset中,多个action对应了不同的serializers的时候 class UserView(viewsets.GenericViewSet): queryset = User.obje ...

  8. 剑指Offer——面试小提示(持续更新中)

    (1)应聘者在电话面试的时候应尽可能用形象的语言把细节说清楚. (2)假设在英语面试时没有听清或没有听懂面试官的问题,应聘者要敢于说Pardon. (3)在共享桌面远程面试中.面试官最关心的是应聘者的 ...

  9. selenium webdriver使用的一些小技巧(持续更新中)

    1.开始结束时间只支持控件选择,不支持填写,怎么办? 如下图: 解决方案: 用javaScipt把开始结束时间的reaonly属性去除,然后再输入,举例如下 /**     * 输入开始日期     ...

随机推荐

  1. XMPP详解

    https://www.jianshu.com/p/84d15683b61e https://www.cnblogs.com/lurenq/p/7026983.html 1. xmpp简介 XMPP ...

  2. jmh 微基准测试

    选择依据:对某段代码的性能测试. 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven ...

  3. MySQL 将字符串转换为数字

    转载自:https://www.cnblogs.com/xiaoleiel/p/8316508.html 在操作mysql时,经常需要将字符转换成数字,这一步虽然简单,但不常用的话也很容易忘记,现将在 ...

  4. !important面试汇总啊

    https://www.jianshu.com/p/feab89b88d6b https://juejin.im/post/5c64d15d6fb9a049d37f9c20#heading-57

  5. node.js express 中文参考手册

    https://www.runoob.com/w3cnote/express-4-x-api.html 原文地址:https://www.zybuluo.com/bajian/note/444152 ...

  6. excel表格 函数功能

    1.去重复 选中一个区域——>数据——>删除重复项 2.条件求和 按照条件筛选:筛选出一样的类目,将对应的值求和. =sumif(A$1:A$10,B2,C$1:C$10) A$1:A$1 ...

  7. 第二十九节: Asp.Net Core零散获取总结(不断补充)

    1. IWebHostEnvironment获取常用属性 (1).获取项目的根目录 _env.ContentRootPath 等价于 Directory.GetCurrentDirectory() ( ...

  8. Website's Game source code

    A Darkroom by doublespeakgames <!DOCTYPE html> <html itemscope itemtype="https://schem ...

  9. Python经典排序算法

    https://www.cnblogs.com/onepixel/p/7674659.html这个文章很nice https://www.bilibili.com/video/av685670?fro ...

  10. Flask - 性能分析(Profiling,profiler,profile)

    1. 疑问 @app.cli.command() @click.option('--length', default=25, help='Number of functions to include ...