Android学习

ImageView显示磁盘中的图片

Uri:是一种通用的资源描述路径,可以描述文件、数据库数据、发短信、打开地图、打开浏览器等等

结构:前缀+唯一标识符+路径
http://www.baidu.com/s?wd=aaaaa
file:///mnt/sdcrad/pic7.jpg

显示本地图片

//描述本地文件的路径
Uri uri = Uri.parse("/mnt/sdcard/pic7.jpg");
ImageView iv = (ImageView) findViewById(R.id.iv_1);
//显示图片
iv.setImageURI(uri);

Uri也可以从File中获取

File f = new File("/mnt/sdcard/image5.jpg");
//从File对象中获取Uri
Uri uri = Uri.fromFile(f);

注意:从sd卡中加载图片,需要添加读sd卡权限,添加方式是在AndroidManifest.xml中添加,如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xykj.day4"
    android:versionCode="1"
    android:versionName="1.0" >
    ...
    <!-- 读sd卡权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        ...
    </application>
</manifest>
EditText输入框

继承自TextView,主要可以从键盘中接收用户输入的内容

<EditText
    android:id="@+id/et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_test"
    android:maxLines="3"
    android:textColor="#ff0000"
    android:textSize="20sp" />

<EditText
    android:id="@+id/et_psw"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="@string/hint_psw"
    android:inputType="textPassword" />
常用属性
android:hint="@string/hint_psw"         设置输入提示(有内容时自动隐藏)
android:inputType="textPassword"        可输入类型:密码、电话号码、邮箱
android:imeOptions="actionNext"         改变Enter按钮的显示效果
        actionNext下一个、actionGo去往、actionSearch搜索、actionDone完成、actionSend发送
监听Enter按键
// 按键监听分为按下、弹起
private OnEditorActionListener onEnterListener = new OnEditorActionListener() {

    @Override
    public boolean onEditorAction(TextView v, int actionId,KeyEvent keyEvent) {
        // 表示当前Enter按键弹起
        // 获取输入框的id
        int id = v.getId();
        if (id == R.id.et_name) {
            // 让输入框得到焦点(成为键盘输入内容的目标)
            etPsw.requestFocus();
        } else if (id == R.id.et_psw) {
            String str = etName.getText() + " " + etPsw.getText();
            et.setText(str);
        }
        return true;
    }
};

针对监听的返回值,false表示不拦截按键默认功能(Enter默认功能是换行),true表示拦截默认功能,监听方法中的KeyEvent表示按键的事件对象行为包括
ACTIONDOWN、ACTIONUP按下弹起等行为,KeyEvent中还包括按键值

对输入框设置Enter按键监听

// 输入框监听Enter按键
etName.setOnEditorActionListener(onEnterListener);
etPsw.setOnEditorActionListener(onEnterListener);
文本框内容变化监听

可以对文本框使用addTextChangedListener方法添加一个TextWatcher监听文本变化

//监听输入的内容变化
etName.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int end, int count) {
        Log.e("m_tag","onTextChanged:"+s);
    }
    @Override
    public void beforeTextChanged(CharSequence s, int start, int end,int count) {
        Log.e("m_tag","beforeTextChanged:"+s);
    }
    @Override
    public void afterTextChanged(Editable s) {
        Log.e("m_tag","afterTextChanged:"+s);
    }
});
文本内容替换

输入框中有时候需要进行内容替换,如密码字符用小圆点来替换,或者某种需要将小写替换为大写等等,需要使用TransformationMethod来进行处理,以密
码字符替换为例:

et.setTransformationMethod(PasswordTransformationMethod.getInstance());
如果需要查看实际的内容则
et.setTransformationMethod(null);

类似的还提供SingleLineTransformationMethod可以将换行符替换为空,’\r’换为空 ‘\n’换为空

文本内容过滤

可以通过设置键盘监听器的方式检测输入的内容,并且约束是否是规范的。如:

etPsw.setKeyListener(new DigitsKeyListener(){
        @Override
        protected char[] getAcceptedChars() {
            return new char[]{'a','b','1','2'};
        }
        @Override
        public int getInputType() {
            return InputType.TYPE_TEXT_VARIATION_PASSWORD;
        }
});

也可以使用系统中提供的监听器处理

TimeKeyListener时间类型的输入,可以接收0-9'a''p''m'':'实例化方式为TimeKeyListener.getInstance()
DigitsKeyListener只接收数字,如果自己有约定的规则则可以重写getAcceptedChars()方法即可
选择框

继承自CompoundButton,CompoundButton继承自Button,在按钮基础上多了选择状态的指示,可以通过checked属性来改变状态,在CompoundButton中
提供OnCheckedChangeListener可以监听单个选择框的选择状态的变化

多选框
<CheckBox
    android:id="@+id/ch_women"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="美女"
    android:checked="true" />

java中使用

//检测选择框是否被选中
boolean isCheck = chCar.isChecked();

监听状态变化
chCar.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton btn, boolean isChecked) {
        Log.e("m_tag","是否选中:"+isChecked);
}
});
单选

单选按钮(RadioButton)要结合单选按钮组(RadioGroup)一起使用

<RadioGroup
    android:id="@+id/m_group"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
        <RadioButton
        android:id="@+id/radio_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="成都" />
        ...
</RadioGroup>

java中

RadioGroup group = (RadioGroup) findViewById(R.id.m_group);
    //获取选择结果
    int id = group.getCheckedRadioButtonId();
    监听选中变化
    group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkId) {
            switch (checkId) {
            case R.id.radio_1:
                tvResult.setText("恭喜你答对了");
                break;
            default:
                tvResult.setText("回答错误");
                break;
        }
    }
});

清除原来的选择

// 清除原来的选择状态
group.clearCheck(); //注意,该方法调用之后会触发group的监听器中的onCheckedChanged方法并且选择的id为-1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值