android基础知识

来源:互联网 发布:杭州行知小学 孙杨 编辑:程序博客网 时间:2024/06/01 08:30
src
        MainActivity.java    主视图
               toast主键:弹出小窗口或提示用户
                    Toast.makeText(绑定到当前的activity身上,输入提示信息,提示信息显示的长短) .show();
 eg:  Toast.makeText(MainActivity.this,"heallo world",0).show();
                   findViewById()   该函数利用我们在XML文件中定义的View的id属性来获取相应的View对象
eg:View view=(View)findViewById(R.id.Layout01);
                    TextView   接收
                    textView.setText("ccccc");  就是将textView对象上面的文字设置为“ccccc
res     资源文件的配置文件
            layout    布局文件
                activity-main.xml   文件视图
                    Textview:显示一些文字,在屏幕上显示的内容由 Textview这个主键来完成的。
                    Button按钮
                            @+id/   给资源文件加一个id值
                            @string/  引用字符串
     Button按钮的响应:必须在activity_main中对Button按钮设置一个响应事件(android:onClick="test01")
            values
                strings.xml:包含了很多字符串
AndroidManifest.xml    核心配置文件
gen
        R.java   资源管理者    想要访问的几乎所有资源都可以通过R类
DDMS:Dalvik调试监控服务,在IDE与设备或模拟器之间起着中间人的角色。
DDMS的作用:
           后台日志监控    系统线程监控     虚拟机状态,堆信息监控    模拟器文件监控  模拟发送短信   模拟拨打电话    模拟发送GPS位置信息
后台日志监控有五个打印级别:verbose详细,debug调试,info通知,warn警告,error错误
Log.代号(标签,信息
apk:android系统安装文件的后缀
签名:a.创建key,b.使用步骤a中产生的key对apk签名
apk文件其实是一个压缩文件,可以解压缩看其内部的文件结构
常见的事件
        1.单击事件 onClickListener
        2.长按事件onLongClickListener
        3.滑动事件onTouchListenner
        4.键盘事件onKeyListener
        5.焦点事件setOnFocusChangeListener
单击事件 onClickListener的响应方式
        1.动态设置(最常见的方式)               
  protected void onCreate(Bundle savedInstanceState) {     //必须写在onCreate()方法中,
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.button1);       //先要找到button
        button.setOnClickListener(new OnClickListener(){      //对button设置点击事件
        @Override
        public void onClick(View v){
        System.out.println("button发生点击了! !");
        }
        });
    }
    
           2.配置方式   仅限于onclick
                      <Button
                                android:id="@+id/button1"
                                android:layout_width="wrap_content"
                                android:layout_height="wrap_content"
                                android:text="Button"
                                android:onClick="test"
                     />
                       在activity中实现test方法,如下:
                        public void test(View  view){      //设置在Oncreak()方法外
                                        view.setX(view.getX()+10);           //表示点击一下就往有移动10个单位
                        }
            3.可复用方式:在onclick方法中判断哪个组件发生了事件。
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);      
        Button button1=(Button) findViewById(R.id.button1);
        Button button2=(Button) findViewById(R.id.button2);
        Button button3=(Button) findViewById(R.id.button3);      
        button1.setOnClickListener(myListener);
        button2.setOnClickListener(myListener);
        button3.setOnClickListener(myListener);
    }
    private View.OnClickListener myListener=new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:

Toast.makeText(MainActivity.this,"button1被点击了。。。。",Toast.LENGTH_SHORT).show(); //Toast.LENGTH_SHORT表示2秒
break;
case R.id.button2:
Toast.makeText(MainActivity.this,"button2被点击了。。。。",Toast.LENGTH_SHORT).show();
break;
case R.id.button3:
Toast.makeText(MainActivity.this,"button3被点击了。。。。",Toast.LENGTH_SHORT).show();
break;
}
}
    };
长按事件onLongClickListener
                protected void onCreate(Bundle savedInstanceState) {   
             Button button=(Button) findViewById(R.id.button1);    //找到button
                button.setOnLongClickListener(new OnLongClickListener() {
               @Override
                       public boolean onLongClick(View v) {
                            System.out.println("button1 长按事件");
               return true;
           }
             });
滑动事件onTouchListenner
                        protected void onCreate(Bundle savedInstanceState) {   
                        final Button button=(Button) findViewById(R.id.button1);
                        ViewGroup viewGroup=(ViewGroup) findViewById(R.id.Layout01);


                          viewGroup.setOnTouchListener(new OnTouchListener() {   
                           @Override
                           public boolean onTouch(View v, MotionEvent event) {
                                       int actionType=event.getAction();
                                        if(actionType==MotionEvent.ACTION_DOWN){
                                                         System.out.println("touch  按下。。 。。");
                                         }else if(actionType==MotionEvent.ACTION_MOVE){
                                                         System.out.println("touch  移动。。 。。");
                                                         button.setX(event.getX());
                                                         button.setY(event.getY());
                                        }else if(actionType==MotionEvent.ACTION_UP){
                                                        System.out.println("touch  松开。。 。。");
                                         }else{
     
                                        }
                                        return true;
                       }
              });
键盘事件 onKeyListener

                 button.setOnKeyListener(new OnKeyListener() { 
                            return false;
                  });   
焦点事件 setOnFocusChangeListener

                     button.setOnFocusChangeListener(new OnFocusChangeListener() {   
                      @Override
                      public void onFocusChange(View v, boolean hasFocus) {
                               System.out.println("button  焦点事件。。。。。");
                      }
                     });      
1.setAnimation:用来实现动画
2.setRepeat:设置重复的次数
3.setDuration设置持久时间
4.TranslateAnimation类:位置变化动画
5.TranslateAnimation animation=new TranslateAnimation(位置变化的起始点X坐标位置变化的结束点X坐标位置变化的起始点y坐标, 位置变化的结束点y坐标);
6. Thread.Sleep函数来使线程挂起一段时间.(耗时操作)
7.new Thread(new Runnable(){
    public void run() {
    v.post(new Runnable() {
           @Override
           public void run() {
            TextView view=(TextView) v;
            view.setText(""+10);
           }
       });
     }  
}).start();解决线程阻塞的问题
8.进程:操作系统结构的基础,资源分配的最小单元.      线程:存在于进程当中,是操作系统调度执行的最小单元.
9.进程管理的五种优先级别
                Foreground process   eg:用户正在操作的界面
                Visible process     eg:用户从一个程序切换到另一个程序,旧的程序被替换,但是可以恢复的。
                Service process  eg:边放音乐,可以边看电子书。
                Background process  定时检测更新。
                Empty process  缓存进程。

11.在android中有两种context(提供了关于应用环境全局信息的接口)
                (1)application Context:对象生存的时间长一点
                (2) activity Context:对象用完就消失了.

13.资源介绍:
              
14.UI组件:
UI组件都是建立在View和ViewGroup这两个类的基础之上,View的子类称为“widget”,所有的ViewGroup的子类称为“Layout


(3)List Views 显示大量项目的View,例如ListView,spinner.
ListView:是一个布局控件(ViewGroup),可垂直滚动,在ListView中显示的元素需要一个适配器(adapter)进行包装
android:divider="#345"    //对边框的颜色进行设置
        android:dividerHeight="6dp"    //对边框的高度进行设置
适配器有:
基本数据适配器(BaseAdapter):需要自己重写方法
简单适配器(SimpleAdapter):功能强大
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView=(ListView) findViewById(R.id.listView1); //找到ListView组件        
        List<Map<String,String>> data=new ArrayList<Map<String,String>>();
        for(int i=0;i<10;i++){
        Map<String,String> map=new HashMap<String,String>();
        map.put("name", "gao"+i);
        map.put("phone", "1232131");
        map.put("age", "123");
        data.add(map);
        }
        SimpleAdapter adapter=new SimpleAdapter(this, 
        data, 
        R.layout.user_item, 
        new String[]{"age","phone","name"}, 
        new int[]{R.id.textView1,R.id.textView2,R.id.textView3});
        /*第一个参数(contest):连接上下文
          * 第二个参数(data):要求输入一个固定格式的集合,List<Map<String,Object>>
          * 第三个参数(resource):一个layout布局的引索     R.layout.user_item
          * 第四个参数(from):new String[]{}
          * 第五个参数(to):new int[]{}
          */

        listView.setAdapter(adapter);
    }
数据库适配器(SimpleCursorAdapter)
数组适配器(ArrayAdapter):展示简单文本
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        final ListView listView=(ListView) findViewById(R.id.listView1);
              ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ss);     //数组适配器(ArrayAdapter) 
        ViewGroup group=(ViewGroup) getLayoutInflater().inflate(R.layout.footer, null); 
        Button button=(Button) group.findViewById(R.id.button1);
        final EditText editText=(EditText) group.findViewById(R.id.editText1);
        button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String indexString=editText.getText().toString();
listView.setSelection(Integer.valueOf(indexString));
}
});
        listView.addHeaderView(group);
        listView.setAdapter(adapter);
    }


spinner:下拉列表
<Spinner
android:spinnerMode="dialog"  //若不改,则默认为dropdown
        />
(1)数据不可更改
<string-array name="spinner_data">        
        <item >山西</item>
        <item >陕西</item>
        <item >江西</item>      
    </string-array>

<Spinner
android:entries="@array/spinner_data"
        android:spinnerMode="dialog"
        />
(2)数据是动态的,可更改
Adapter:适配器模式
public class MainActivity extends Activity {
private String[] ss=new  String[]{
"北京",
"上海",
"深圳"
};  
private List<String> list=new ArrayList<String>();
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list.add("java");
        list.add("C++");
        list.add("php");
        Spinner spinner=(Spinner) findViewById(R.id.spinner1);
        BaseAdapter adapter=new MyAdapter();
        spinner.setAdapter(adapter);      
    }
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();                 //return ss.length;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView=new TextView(MainActivity.this);
textView.setText(list.get(position));                  //textView.setText(ss[position]);
return textView;
}
}
}
(3)用ArrayAdapter
private String[] ss=new  String[]{
"北京",
"上海",
"深圳"
};  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner spinner=(Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ss);
        spinner.setAdapter(adapter);
    }

(4)Display Views 显示图片的View,例如Galley,ImageSwitcher.

Galley:

public class MainActivity extends Activity {
private int[] images=new int[]{
R.drawable.a1,
R.drawable.a2,
R.drawable.a3,
R.drawable.a4,
R.drawable.a5,
};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     
setContentView(R.layout.activity_main);


        Gallery gallery=(Gallery) findViewById(R.id.gallery1);
        final ImageView imageView=(ImageView) findViewById(R.id.imageView1);
        MyAdapter adapter=new MyAdapter(images, this);
        gallery.setAdapter(adapter);
        gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
imageView.setImageResource(images[position]);
}        
});
    }
    private class MyAdapter extends BaseAdapter{
    private int[] images;
    private Context context;  
    public MyAdapter(int[]images,Context context){
    super();
    this.images=images;
    this.context=context;
    }
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView=new ImageView(context);
imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
imageView.setImageResource(images[position]);
return imageView;
}  
    }

ImageView:图片浏览器
   在MainActivity中使图片进行翻阅
private int[] a=new int[]{
R.drawable.a1,
R.drawable.a2,
R.drawable.a3,
R.drawable.a4
};
ImageView imageView=(ImageView) findViewById(R.id.imageView1);
        final int width=this.getWindowManager().getDefaultDisplay().getWidth();     //获取屏幕的宽度
        imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x=(int) event.getX();           //在图片点击的过程中,获得点击X轴坐标
ImageView view =(ImageView) v;
if(x>=(width/2)){
//右侧
if(count==3){
count=-1;
}
view.setImageResource(a[++count]);
}else{
//左侧
if(count==0){
count=3;
}
view.setImageResource(a[--count]);
}
return false;
}
});
(5)Menus  显示额外的和上下菜单项目的View
(6)Additional Views 其他的View,例如AnalogClock,DigitalClock 



18.UI组件之scrollView
scrollView是一个单帧布局,scrollView滚动视图是指当拥有很多内容,屏幕显示不完时,需要通过滚动条来显示的视图,只支持垂直的滚动。
HorizontalscrollView可支持水平的滚动。
19.UI组件之网格布局组件GridView

可使用表格的方式显示组件,可滚动的控件

@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
RadioButton button=(RadioButton) group.findViewById(checkedId);
Toast.makeText(getApplicationContext(), (String)button.getTag(), 0).show();
}
});
}
    

(3)List Views 显示大量项目的View,例如ListView,spinner.
ListView:是一个布局控件(ViewGroup),可垂直滚动,在ListView中显示的元素需要一个适配器(adapter)进行包装
android:divider="#345"    //对边框的颜色进行设置
        android:dividerHeight="6dp"    //对边框的高度进行设置
适配器有:
基本数据适配器(BaseAdapter):需要自己重写方法
简单适配器(SimpleAdapter):功能强大
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView listView=(ListView) findViewById(R.id.listView1); //找到ListView组件        
        List<Map<String,String>> data=new ArrayList<Map<String,String>>();
        for(int i=0;i<10;i++){
        Map<String,String> map=new HashMap<String,String>();
        map.put("name", "gao"+i);
        map.put("phone", "1232131");
        map.put("age", "123");
        data.add(map);
        }
        SimpleAdapter adapter=new SimpleAdapter(this, 
        data, 
        R.layout.user_item, 
        new String[]{"age","phone","name"}, 
        new int[]{R.id.textView1,R.id.textView2,R.id.textView3});
        /*第一个参数(contest):连接上下文
          * 第二个参数(data):要求输入一个固定格式的集合,List<Map<String,Object>>
          * 第三个参数(resource):一个layout布局的引索     R.layout.user_item
          * 第四个参数(from):new String[]{}
          * 第五个参数(to):new int[]{}
          */

        listView.setAdapter(adapter);
    }
数据库适配器(SimpleCursorAdapter)
数组适配器(ArrayAdapter):展示简单文本
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);        
        final ListView listView=(ListView) findViewById(R.id.listView1);
              ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, ss);     //数组适配器(ArrayAdapter) 
        ViewGroup group=(ViewGroup) getLayoutInflater().inflate(R.layout.footer, null); 
        Button button=(Button) group.findViewById(R.id.button1);
        final EditText editText=(EditText) group.findViewById(R.id.editText1);
        button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String indexString=editText.getText().toString();
listView.setSelection(Integer.valueOf(indexString));
}
});
        listView.addHeaderView(group);
        listView.setAdapter(adapter);
    }


spinner:下拉列表
<Spinner
android:spinnerMode="dialog"  //若不改,则默认为dropdown
        />
(1)数据不可更改
<string-array name="spinner_data">        
        <item >山西</item>
        <item >陕西</item>
        <item >江西</item>      
    </string-array>

<Spinner
android:entries="@array/spinner_data"
        android:spinnerMode="dialog"
        />
(2)数据是动态的,可更改
Adapter:适配器模式
public class MainActivity extends Activity {
private String[] ss=new  String[]{
"北京",
"上海",
"深圳"
};  
private List<String> list=new ArrayList<String>();
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list.add("java");
        list.add("C++");
        list.add("php");
        Spinner spinner=(Spinner) findViewById(R.id.spinner1);
        BaseAdapter adapter=new MyAdapter();
        spinner.setAdapter(adapter);      
    }
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return list.size();                 //return ss.length;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView=new TextView(MainActivity.this);
textView.setText(list.get(position));                  //textView.setText(ss[position]);
return textView;
}
}
}
(3)用ArrayAdapter
private String[] ss=new  String[]{
"北京",
"上海",
"深圳"
};  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Spinner spinner=(Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ss);
        spinner.setAdapter(adapter);
    }

(4)Display Views 显示图片的View,例如Galley,ImageSwitcher.

Galley:

public class MainActivity extends Activity {
private int[] images=new int[]{
R.drawable.a1,
R.drawable.a2,
R.drawable.a3,
R.drawable.a4,
R.drawable.a5,
};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
     
setContentView(R.layout.activity_main);


        Gallery gallery=(Gallery) findViewById(R.id.gallery1);
        final ImageView imageView=(ImageView) findViewById(R.id.imageView1);
        MyAdapter adapter=new MyAdapter(images, this);
        gallery.setAdapter(adapter);
        gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {
imageView.setImageResource(images[position]);
}        
});
    }
    private class MyAdapter extends BaseAdapter{
    private int[] images;
    private Context context;  
    public MyAdapter(int[]images,Context context){
    super();
    this.images=images;
    this.context=context;
    }
@Override
public int getCount() {
return images.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView=new ImageView(context);
imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
imageView.setImageResource(images[position]);
return imageView;
}  
    }

ImageView:图片浏览器
   在MainActivity中使图片进行翻阅
private int[] a=new int[]{
R.drawable.a1,
R.drawable.a2,
R.drawable.a3,
R.drawable.a4
};
ImageView imageView=(ImageView) findViewById(R.id.imageView1);
        final int width=this.getWindowManager().getDefaultDisplay().getWidth();     //获取屏幕的宽度
        imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x=(int) event.getX();           //在图片点击的过程中,获得点击X轴坐标
ImageView view =(ImageView) v;
if(x>=(width/2)){
//右侧
if(count==3){
count=-1;
}
view.setImageResource(a[++count]);
}else{
//左侧
if(count==0){
count=3;
}
view.setImageResource(a[--count]);
}
return false;
}
});
(5)Menus  显示额外的和上下菜单项目的View
(6)Additional Views 其他的View,例如AnalogClock,DigitalClock 





0 0
原创粉丝点击