android笔记

想了解一下Android逆向,但又没有过Android的开发经验,所以从慕课网上找了一个视频,做了一点笔记,有点乱:

 

Android项目结构

几点说明:

0.AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)

1.界面布局文件一般在res(文件夹)下的layout(文件夹)下面的(xml文件)进行编辑 。

2.xml文件与java源文件进行关联是通过下面方法实现的: 

setContentView(R.layout.activity_main);//将布局的main_activity.xml文件引入到activity当中

3.xml文件里面的数字、字符串一般都是写在values文件下的一个文件(相当于在values文件夹下的XXX.xml里起个  “别名”),xml只需用“@XXX/别名 ”引用。

4.res文件夹下面的所有的资源都会对应在gen(文件夹)目录下的R(.java)文件中生成对应的资源id(唯一标识数据的)

5.Activity是一个应用程序组件,提供用户与程序交互的界面,Activity的创建要求:

 继承Android的Activity类;

 重写方法(onCreate);

 设置显示布局;

 在AndroidManifest文件中,注册Activity。即:在AndroidManifest.xml文件的标签activity里面的android:name="包(Activity所在包)名.Activity的名字",见下图。

6.Button与ImageButton区别:

   Button可以设置文本内容的按钮

   ImageButton不可设置内容的一个按钮,background以及src添加一个image,当前图片可以做一个有文本的内容的图片实现Button。

7.所有控件都有一个onclick的事件,不仅仅是Button和ImageButton。

监听事件实现的3种写法:(原理见名知意,下面分别有按视频抄写的“啰嗦”代码)

(1.匿名内部类的实现

public class MainActivity extends Activity{
    private Button loginButton;
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    /*
     * 1.初始化当前所需要的控件,如歌初始化一个控件?
     * findViewById---返回的是一个View的对象,View是所有控件的父类
     * findViewByIdshi 如何查找到对应view的id? R.java里面的id类中会自动生成button1
     *
     * 2.设置Button的监听器,通过监听器实现我们点击Button要操作的事情
     */
    
       loginButton =(Button) findViewById(R.id.button1)
        /*
         * 1.监听事件通过第一种方法实现(匿名内部类)
         */
        loginButton.setOnClickListener(new OnClickListener(){ 

            public void onClick(View arg0){
            //在当前onClick方法中监听点击Button的动作
            System.out.printIn("我的Button被点击了");
            }
        });
        
    }
}
View Code

(2.独立类的实现

public class MainActivity extends Activity{
    private Button bt1;
    private Button bt2;
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bt1=(Button)findViewById(R.id.button1);
        bt1=(Button)findViewById(R.id.button2);
        
        // bt1.setOnClickListener(new OnClickListener(){
            
            // public void onClick(View v){
                
            // }
        // });
        
        /*
         *点击事件的外部类的写法和作用
         */
        bt1.setOnClickListener(new MyOnClickListener(){ 
        public void onClick(View v){
            //调用父类的onClick
            super.onClick(v);
            Toast.makeText(MainActivity.this,"bt1要执行的逻辑",1).show();
            }
        });    
        bt2.setOnClickListener(new MyOnClickListener(){ 
        public void onClick(View v){
            //调用父类的onClick
            super.onClick(v);
            Toast.makeText(MainActivity.this,"bt2要执行的逻辑",1).show();
            }
        });
    }
}
/*
 * OnClickListener是一个接口
 */
class MyOnClickListener implements OnClickListener{
    public void onClick(View v){
         //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button的透明度
         //Log.i("tag","父类的onclick事件");
         v.setAlpha(0.5f);
    }
}
View Code

(3.实现接口的方式来实现

public class MainActivity extends Activity implements OnClickListener{
    private Button bt1;
    private Button bt2;
    private ImageButton imgBt;
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        bt1=(Button)findViewById(R.id.button1);
        bt1=(Button)findViewById(R.id.button2);
        imgBt=(Button)findViewById(R.id.imageButton1);
        // bt1.setOnClickListener(new OnClickListener(){
            
            // public void onClick(View v){
                
            // }
        // });
        
        /*
         *点击事件的外部类的写法和作用
         */
        bt1.setOnClickListener(new MyOnClickListener(){ 
        public void onClick(View v){
            //调用父类的onClick
            super.onClick(v);
            Toast.makeText(MainActivity.this,"bt1要执行的逻辑",1).show();
            }
        });    
        bt2.setOnClickListener(new MyOnClickListener(){ 
        public void onClick(View v){
            //调用父类的onClick
            super.onClick(v);
            Toast.makeText(MainActivity.this,"bt2要执行的逻辑",1).show();
            }
        });
    }
}   /*
     * 3.通过实现一个接口的方式实现监听器
     */
     imgBt.setOnClickListener(this);
/*
 * OnClickListener是一个接口
 */
class MyOnClickListener implements OnClickListener{
    public void onClick(View v){
         //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button的透明度
         //Log.i("tag","父类的onclick事件");
         v.setAlpha(0.5f);
         
    }
    public void onClick(View v){
        Log.i("tag","第三种方式实现");
    }
}
View Code
原文地址:https://www.cnblogs.com/pursuitofacm/p/6734955.html