安卓study
来源:互联网 发布:java图片保存到服务器 编辑:程序博客网 时间:2024/06/07 00:21
arrayadapter+simpleadapter
public class MainActivity extends Activity { private ListView list;//视图,即为电视屏幕 private ArrayAdapter<String> arradapter;//数据适配器,适用于数组+集合,即为无线 private SimpleAdapter simadapter; private List<Map<String, Object>> datalist; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); list =(ListView)findViewById(R.id.listView1);//数组形式的数据源,即为电视台 //1.新建一个数据适配器//.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) //2.适配器加载适配源 String [] arrdata={"mook1","i","like","u"}; arradapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arrdata); datalist=new ArrayList<Map<String,Object>>(); simadapter=new SimpleAdapter(this, getdata(), R.layout.item, new String[]{"pic","text"}, new int[]{R.id.pic,R.id.text}); //3.视图加载适配器 //list.setAdapter(arradapter); list.setAdapter(simadapter); } private List<Map<String, Object>> getdata(){ for (int i=0;i<20;i++){ Map<String , Object> map=new HashMap<String, Object>(); map.put("pic", R.drawable.ic_launcher); map.put("text", "mook"+i); datalist.add(map); } return datalist; }}
spinner
public class MainActivity extends Activity { private TextView text1,text2,text3; private EditText edit; private Spinner spin; private ArrayAdapter<String> arr_adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text1=(TextView)findViewById(R.id.textView1); text2=(TextView)findViewById(R.id.textView2); text3=(TextView)findViewById(R.id.textView3); spin=(Spinner)findViewById(R.id.spinner); edit=(EditText)findViewById(R.id.editText1); //1、新建适配器 2、适配器加载数据源 3、视图加载适配器 String[] data=new String[]{"小学","初中","高中","本科","研究生"}; arr_adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data); arr_adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); spin.setAdapter(arr_adapter); spin.setOnItemSelectedListener(listener); } private Spinner.OnItemSelectedListener listener= new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub String s1=edit.getText().toString(); String s2=spin.getSelectedItem().toString(); text3.setText(s1+"的学历:"+s2); } @Override public void onNothingSelected(AdapterView<?> parent) { // TODO Auto-generated method stub } };}
2017/2/22
Android攻城狮的第一门课(入门篇)
第5章 认识按钮Button以及ImageButton
text属性内容放置在value-string.xml中
加注释快捷键:
ctrl+/ //注释
ctrl+shift+/ /**/注释
监听三种:
public class MainActivity extends Activity implements OnClickListener{ private Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); /*监听的三种方式 * 1、匿名内部类 * 2、外部类 * 3.接口 */ /* 1 * btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "匿名内部类"); //Toast.makeText(MainActivity.this, "匿名", Toast.LENGTH_LONG); } });*/ //btn.setOnClickListener(listener); btn.setOnClickListener(this); } /*2 * OnClickListener listener =new OnClickListener() { @Override public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "匿名内部类"); Toast.makeText(MainActivity.this, "匿名", Toast.LENGTH_LONG); } };*/ @Override public void onClick(View v) { // TODO 自动生成的方法存根 Log.i("tag", "匿名内部类"); }}
textview实现跑马灯效果
<com.example.meng.marqueettext android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true"//单行 android:ellipsize="marquee"//去掉省略号 android:focusable="true"//使其循环 android:marqueeRepeatLimit="marquee_forever" //无限制循环 android:focusableInTouchMode="true" android:text="@string/text_name"/> <com.example.meng.marqueettext android:id="@+id/textView1" android:layout_marginTop="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:marqueeRepeatLimit="marquee_forever" android:focusableInTouchMode="true" android:text="@string/text_name"/>
step1:textview增加若干属性,即可实现一个textview的跑马灯效果
step2 : 复制一个textview,两个的情况下必须建立新的类marquee,继承textview,三个构造方法+isfucused方法return TRUE
step3:包名+类名代替textview
动态匹配功能:显示的下拉列表,使用arrayadapter
private AutoCompleteTextView act; private ArrayAdapter<String> arr_adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); act=(AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); String[] resource={"beijing1","beijing2","beijing3","shanghai1","shanghai2"}; arr_adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, resource); act.setAdapter(arr_adapter); }
注意两条属性:
提示
输入几个字母开始提示
android:hint="请输入你要搜索的关键词" android:completionThreshold="3"
与autocompletetextview不同的是,可以用逗号作为分隔符,进行多选。
private ArrayAdapter<String> arr_adapter; private MultiAutoCompleteTextView mct; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mct=(MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView1); String[] resource={"beijing1","beijing2","beijing3","shanghai1","shanghai2"}; arr_adapter =new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, resource); mct.setAdapter(arr_adapter);mct.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); }
private ToggleButton tb; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tb=(ToggleButton) findViewById(R.id.toggleButton1); iv=(ImageView) findViewById(R.id.imageView3); tb.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //当tb被点击时,执行当前的方法 //第一个参数检测是哪个tb被点击了,第二个参数判断当前tb的状态 iv.setBackgroundResource(isChecked?R.drawable.open:R.drawable.close); }
private CheckBox cb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cb=(CheckBox) findViewById(R.id.checkBox1); cb.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // 匿名内部类实现监听,通过该方法来监听CheckBox是否被选中 //ischecked参数可以判断当前的cb是否被选中 if (isChecked) { String text= cb.getText().toString(); Log.i("tag", text);//在控制台的日志中显示text } } });
public class MainActivity extends Activity implements android.widget.RadioGroup.OnCheckedChangeListener { private RadioGroup rg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rg=(RadioGroup) findViewById(R.id.radioGroup1); rg.setOnCheckedChangeListener(this); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.radio1: Log.i("tag", "men"); break; case R.id.radio2: Log.i("tag", "women"); break; default: break; } }}
使用接口时,继承的是android.widget.RadioGroup.OnCheckedChangeListener
若直接写oncheckedchangelistener,必须要导入对应的包。
radiogroup是单选,可以用switch语句
gravity决定其子类控件的属性
写在线性布局中。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom|center_horizontal" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>
layout_gravity决定的是当前父类控件的位置。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" android:layout_gravity="center_horizontal|center"/></LinearLayout>
界面的布局,往往需要两种属性共同控制,父类和子类。
如果父类和子类中的某些属性相悖,当然是听爸爸的啦~
layout_weight 子类控件在父类控件中所占比例。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button" android:layout_weight="1" /> <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Button" android:layout_weight="1" /></LinearLayout>
0 0
- 安卓study
- 安卓study 2017.1.8
- 安卓study 2/25
- 安卓study 2017/2/23
- 安卓study 2017/2/24
- 安卓study 2/26-3/6
- study
- study
- study
- study
- STUDY
- Study
- study
- study
- study...
- study
- study
- study
- leeocode_503. Next Greater Element II
- PSO粒子群算法
- 使用jvisualvm
- CMS(Concurrent Mark-Sweep)垃圾回收器
- 关于Java的反射机制,你需要理解这些...
- 安卓study
- [Linux学习]2017.02.22
- 我的新玩具-AppleScript(二)
- 面向arcgis的python编程01
- 1015. Reversible Primes (20)
- vue-属性与方法
- Maven学习(1)-----概念,作用详解,配置
- 我的新玩具-AppleScript(三)
- CS231n-02-Linear Classification