安卓总结


2017.3.24

xml布局

1.我们学的是LinearLayout线性布局,布局前先确定好界面的整体排版,竖着的用android:orientation="vertical",横的用android:orientation="horizontal",利用android:padding="xxdp"来美化边框,使得界面不挨边

2.使用界面控件的时候,有开就得有关,例如 xxxx表示属性,在最后加上/>;像 结束时要用。

跑马灯效果

    android:ellipsize="marquee"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:marqueeRepeatLimit="marquee_forever"
    android:scrollHorizontally="true"
    android:scrollbars="horizontal"
    android:singleLine="true" --这些为创建跑马灯关键语句

.java

1.如何编写.java事件
在.java下编写时,我们先得定义变量,例如private EditText extizhong;
再建立相关的事件响应extizhong=(EditText)findViewBy
Id(R.id.tizhong);(extizhong为我们定义的变量名,tizhong为xml界面中我们定义的一个EditText组件的id,id和控件一定要保持一致,不然无法运行或者闪退)
最后添加相应的监听事件,来实现自己想要实现的指令,例如:

btnjisuan.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//实现指令的方法代码
}
});

2.运用相关的方法
在protected void最后点击右键

选中Generate...

选中Override Methods...

最后在app目录下找

常用控件及其用法

TextView

1.常用属性:
2.常用于:(1)用于显示标题或者文字,例如在.xml下输入 android:text="你想输入的文字"(2)用于输出你想要的文字,例如在.java下输入txbiaoti.setText("你想输出的文字");

EditText

1.常用属性
2.常用于:用户可以输入数据,从而传给android应用

Button

1.常用于:确定,取消,退出等按钮
2.按钮的单击事件
(1)在xml布局文件中设置Button的属性,即android:onClick="myclick",然后在该布局文件对应的Acitivity中实现该方法。例如:

public void myclick(View view){
//方法
}

(2)使用setOnClickListener添加监听事件,例如:

btnjisuan.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//实现指令的方法代码
}
});

ImageView

1.常用属性
2.常用于显示图片。常用的有2种方法,一种是在xml界面android:src="@drawable/图片名",一种是在.java中ivtupian.setImageResource(R.drawable.图片名)

RadioButton

使用多个RadioButton而确保单选时,可以用RadioGroup,例如:

        <RadioButton

            android:id="@+id/meihua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="@dimen/activity_vertical_margin"
            android:checked="true"
            android:text="梅花 "
            android:textSize="20sp" />

        <RadioButton

            android:id="@+id/shinanhua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="石楠花   "
            android:textSize="20sp" />

        <RadioButton

            android:id="@+id/xiangyahua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="象牙花"
            android:textSize="20sp" />
    </RadioGroup>

    <RadioGroup

        android:id="@+id/rg2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal">

        <RadioButton

            android:id="@+id/xiuqiuhua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="绣球花"
            android:textSize="20sp" />

        <RadioButton

            android:id="@+id/shilanhua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="石兰花   "
            android:textSize="20sp" />

        <RadioButton

            android:id="@+id/mudanhua"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="牡丹花"
            android:textSize="20sp" />
    </RadioGroup>

而2个或2个以上RadioGroup组时保证单选时,则要在.java中编写,可以通过监听RadioGroup来实现单选,例如:
//在定义变量和建立相关的事件响应基础上

rgrg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
            if (rbmeihua.isChecked()) {
                ivtupian.setImageResource(R.drawable.meihua);
                rgrg2.clearCheck();
            }
            if (rbshinanhua.isChecked()) {
                ivtupian.setImageResource(R.drawable.shinanhua);
                rgrg2.clearCheck();
            }
            if (rbxiangyahua.isChecked()) {
                ivtupian.setImageResource(R.drawable.iangyahua);
                rgrg2.clearCheck();
            }
        }
    });

rgrg2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
            if (rbxiuqiuhua.isChecked()) {
                ivtupian.setImageResource(R.drawable.xiuqiuhua);
                rgrg.clearCheck();
            }
            if (rbshilanhua.isChecked()) {
                ivtupian.setImageResource(R.drawable.shilanhua);
                rgrg.clearCheck();
            }
            if (rbmudanhua.isChecked()) {
                ivtupian.setImageResource(R.drawable.mudanhua);
                rgrg.clearCheck();
            }
        }
    });

CheckBox

用于多选或者只有一个选项的情况。建立方法如下:

它的监听事件:

cbjava.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {
            // TODO Auto-generated method stub
           //方法
        }
    });

Android常见事件

onTouchEvent事件

常用方法:

1.MotionEvent.getAction()
(1)屏幕按下时,MotionEvent.getAction()值为MotionEvent.ACTION_DOWN
(2)屏幕抬起时,MotionEvent.getAction()值为MotionEvent.ACTION_UP
(3)屏幕滑动时,MotionEvent.getAction()值为MotionEvent.ACTION_MOVE
2.MOtionEvent.getX()||MOtionEvent.getY()
例如:

public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
        float x = event.getX();
        float y = event.getY();
        String pos = "x坐标" + x + "y坐标" + y;//获取鼠标的x,y坐标值
        Toast.makeText(this, pos, Toast.LENGTH_LONG).show();//通过Toast文本方法实现输出坐标值
    }
    return super.onTouchEvent(event);
}

键盘事件

键盘事件主要用于对键盘事件的监听,根据用户输入内容对键盘事件进行跟踪。
例如监听手机上的退出:

private long exitTime = 0;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {//判断手机上退出键
        if ((System.currentTimeMillis() - exitTime) > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
            System.exit(0);
        }
        return true;
    }
    return super.onKeyDown(keyCode, event);
}//参考于百度http://www.cnblogs.com/jxgxy/archive/2012/08/23/2653404.html

菜单与消息通知

菜单

1.在res上面右键->New->Android resource directory

2.点击之后,出现下图Resource type选择menu

3.menu上面右击,如下图选择:

4.file name随便取名字

进入mune.xml界面中后,一种是直接写代码
还有一种如下如图

拖动左上角MenuItem,然后在属性见面编辑

5.最后在.java下输入重载方法即可

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.mune,menu);
    return true;
}

对话框

利用重载方法onOptionsItemSelected,例如:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.item_about:
            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("关于");//为对话框设置标题
            builder.setIcon(R.mipmap.ic_launcher);//为对话框设置图标
            builder.setMessage("版本为1.0");//为对话框设置内容
            builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    //把自己关掉
                    dialogInterface.dismiss();
                    //整个关掉
                    MainActivity.this.finish();
                }
            });
            builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                }
            });
            builder.setNeutralButton("退出", null);
            //创建并显示
            builder.create().show();
            break;
    }
    return false;
}

结果如下:

错误总结

1.闪退情况

解决方案:
定义变量:private RadioButton rbmeihua;
建立相关事件响应:rbmeihua = (RadioButton) findViewById(R.id.meihua);
要注意xml布局中id名相对应的控件和相对应的变量,千万不能搞错.

2.

xml布局中所有的控件有头必有尾,例如 xxxx表示属性,在最后加上/>;像 结束时要用。

3.

重载方法最好在

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}

的后面点击右键找,不然不同的位置有不同的重载方法,容易找不到。

4.

跑马灯效果必须要在字超过一行的情况下,不然用不了。

5.

想不出啥了,有问题的一起分享解决。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM