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. 动力;动力学
找到需要添加控件的控件
LinearLayout ll = (LinearLayout)findViewById(R.id.thisid);
创建子控件,此处用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来说,读取速度最快
给找到的控件添加子控件
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的弹窗代替。
......
}