Android Day03

Android Day03

打印Log

warn,error一般系统使用,开发者一般不使用。

Log打印流程:Android分配独立的打印Log的内存区域–>当内存不够时,打印出最早的Log

Android输入框

Android开发中要尽量避免控件紧贴屏幕。

导包时要注意,不要导入android.R;

<EditText
    android:id="@+id/main_content_et"
    width,height...
    android:layout_margin="10dp"
    android:hint="hint"
    android:maxLength="1"
    android:lines="5"
    android:gravity="left|top"
    android:layout_gravity="left"          
    />
<!--maxLength 最大的长度
    enabled="false" 不让输入框输入
    lines 设置输入框默认有多少行位置
    gravity 控制内容的显示位置
    layout_gravity 控制子控件本身的位置
--> 
public class MainActivity extends Activity{
    private static final String tag="myTag";//tag标签一般抽取出来。
    protected void onCreate(Bundle savedInstanceState){
    findViewById....
    ....
    Log.v(editview.getText());//一般打印使用verbose就行了      
    }
}
输入框监听
protected void onCreate(Bundle savedInstanceState){
    editview.addTextChangedListener(new MyWatchText());

}
class MyWatchText implements TextWatcher{
    //重写一些见名知意的方法
    //一般只重写onTextChanged方法
    //拿到输入内容后,会查询数据库
}
动态添加控件

Dynamic

[daɪ’næmɪk][daɪ’næmɪk]

  • adj. 动力的;动态的;有活力的;【音】力度变化的
  • n. 动力;动力学
  1. 找到需要添加控件的控件

    LinearLayout ll = (LinearLayout)findViewById(R.id.thisid);
  2. 创建子控件,此处用Button

    /**
    *在Java中new一个构造器时,使用哪一个?
    *1.仅在Java代码中,而不在xml中引用的话,使用单一参数构造器
    *这个是系统默认调用
    *2.如果是在xml中需要引用的控件,需要使用第二个构造方法
    */
    //Context是当前的环境,指的是Activity(继承了Context),
    Button btn = new Button(this);
    //AttributeSet 封装了xml中的所有属性
    btn.setText("text");
    btn.setTextSize(30);//Java代码中,密度都是px
    btn.setTextColor(0x00ff0000);//16进制对于CPU来说,读取速度最快
  3. 给找到的控件添加子控件

    ll_root.addView(btn);

    设置布局参数

    //btn.setHeight(pixel);
    //btn.setWidth(pixel); 这样的设置方法不可取,
    //只有在控件显示以后,要修改已经显示的控件大小才会使用这样的方法
    LinearLayout.layoutParams params = new LinearLayput.layoutParams(width, heigth);
    //width,heigth用LinearLayout.LayoutParams.WRAP_CONTENT等代替。

    xml最终会解析成java代码,用java代码修改参数、添加控件可以提高运行效率。

选择框
ToggleButton
<ToggleButton 
    android:checked="true"
    android:textOn="ON"
    android:textOff="OFF"              
/>
<!-- checked:默认被选中状态
     Text被舍弃 -->
protected void onCreate(Bundle savedInstanceState){
  ...
    ToggleButtn tbtn = (ToggleButton) findViewById(r.id.id);
    tbtn.setOnCheckedChangeListener(new onCheckedListener(){
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
          if(isChecked){
            //被选中时
            Log.v("myTag", "verbose,turnON");
          } else{
            Log.v("myTag", "verbose,turnOff");
          }
  });
}
RadioButton

属于Android的单选框。

RadioButton 大部分情况下是和RadioGroup一起使用,通过RadioGroup管理RadioButton,每次选定一个

<RdioGroup
    oientation,width,heigth
    android:checked           
    android:id="@+id/main">

    <RadioButton 
    android:id="@+id/a"
    width,heigth,text                 
    />
    <RadioButton 
    android:id="@+id/b"
    width,heigth,text                                  
    />
    <RadioButton 
    android:id="@+id/c"
    width,heigth,text                                  
    />
</RdioGroup>
CheckBox

CheckBox一般在Android中应用于多选情况

<CheckBox
    id,
    width,heigth,
    android:text="a"/>
<CheckBox
    id,
    width,heigth,
    android:text="b"/>
<CheckBox
    id,
    width,heigth,
    android:text="c"/>

在Java中,find by id–>设置监听

cb.setOnCheckedChangedListener(this);//设置监听

@Override
public void onCheckedChanged(CompoundButton buttonView, Boolean isChecked){
    String content = isChecked?"选中":"没有选中";
    Toask.makeText(Context.class, buttonView.getText()+content,Toast.LENGTH_SHORT).show();
}
进度条
ProgressBar & SeekBar
<ProgressBar 
width,id,heigth/><!-- 无法显示进度 -->
<ProgressBar 
wigth,id,heigth
android:max="100"
android:progress="50"
android:style="?android:attr/progressBarStyleHorizontal"/>
<!-- 可现实进度条 
     max:当前的最大值
     progress:当前进度 -->
<SeekBar 
.../><!-- 可拖拽 -->
//SeekBar监听
sb.setSeekBarChangedListener(new ...(){
  @override
  ....
});
RatingBar
<RatingBar
    android:numStars="5"
    android:rating="3.5"
    stepSize="0.2"/>
<!-- numStars:初始化显示个数
     ratings:选中的个数
     stepSize:显示星星的倍数-->
ImageView

直接继承于View,没有text属性

属性: scaleType :缩放

Scale [skeɪl]

n.  刻度; 刻度尺; 尺度; 比率#天平, 秤; 天平盘, 秤盘#鳞, 鱼鳞; 鳞状物; 介壳; 障眼物

v.  攀登; 向上; 称重; 根据某比率来做; 刮去鳞片; 用石膏盖起来的; 把某物的尺寸改变; 调节图片的尺寸, ==重新定图片的尺寸 (计算机用语)==

scaleType的几种类型,最常使用fixXY

<ScrollView>
    <LinearLayout>
        <ImageView
                   src....
        android:scaleType:"fixXY"/>
    </LinearLayout>
</ScrollView>

ScrollView只能有一个子控件,此时包裹另一个GroupView即可

水平滚动时,使用HorizontalScrollView

DatePicker

日期pick控件

//想要设置DatePicker的时间,不使用设置监听
dp.init(year,month,day,new OnDateChangedListener(){
    public void onDateChanged(...){
      .....
    }
})
//month从0~11
TimePicker

时间Pick控件

//设置24小时制
tp.setIs24HourView(true);
//设置监听
tp.setOnChangedListener(...){
    ......
}
网页控件
<WebView />
wv.loadUrl("http://www.google.com");
//加载网页,激活系统浏览器去访问网页。https访问比较慢。
//WebView默认不支持JavaScript,需要修改。
wv.getSetting().setJavaScriptEnabled(true);
wv.setWebViewClient(new WebViewClient(){
    //修改默认使用系统浏览器
    public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event){
      //返回false 使用系统已存在浏览器
      return true;
    }
});
//WebView不支持JS弹窗
wv.setWebChromeClient(){
    //重写方法,调用Android的弹窗代替。
    ......
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值