android 基础

Posted jentary

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 基础相关的知识,希望对你有一定的参考价值。

package app.tj.com.hello;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //动态创建视图
        LinearLayout linearLayout = new LinearLayout(this);

        ViewGroup.LayoutParams layoutParams =  linearLayout.getLayoutParams();
        //linearLayout.addView();


        linearLayout.setLayoutParams(layoutParams);

        //类似模板
        LayoutInflater layoutInflater = getLayoutInflater();
        layoutInflater.inflate(R.layout.activity_main,null);


        setContentView(R.layout.activity_main);

        //添加按钮
        Button button = (Button) findViewById(R.id.add);

        Button button2 = (Button) findViewById(R.id.add2);

        //添加监听
        /*button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT).show();
            }
        });*/

        button.setOnClickListener(listener);


        //触碰事件
        button.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                int actionType = event.getAction();
                if (actionType==MotionEvent.ACTION_DOWN){
                    //按下
                }else if (actionType==MotionEvent.ACTION_MOVE){
                    //移动
                }else if (actionType==MotionEvent.ACTION_UP){
                    //松开
                }
                //绑定多个事件时是否往下传递,true不传递
                return false;
            }
        });

        //获取布局页面  相当于DIV,可以加相关事件
        ViewGroup viewGroup = (ViewGroup) findViewById(R.id.main);

        viewGroup.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return false;
            }
        });
        //一个ACTIVITY是一个UI线程,线程会监听页面的变化,每个ACTIVITY 中的VIEW 会相互影响
        //当线程阻塞超过5秒,系统就会干预
        //解决办法   再创建一个线程
        //新创建的线程不能修改当前UI主线程中的VIEW组件

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(5000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        //不能再新开辟线程中调用V
                        //TextView textView = (TextView) v;
                        //可用---android解决方案
                        //可读性差
                        v.post(new Runnable() {
                            @Override
                            public void run() {
                                //异步执行  放到UI主线程中
                                TextView textView = (TextView) v;
                            }
                        });

                        //第二种方案  AsyncTask

                    }
                }).start();
            }
        });


        //android 继承的五个优先级,进程在运行过程中会随时变化
        //1用户正在操作的
        //2用户从一个程序切换到另一个程序
        //3边放音乐,边看电子书,音乐的service
        //4定时检测更新
        //5缓存进程


        //资源文件   res   R类中都可以获取(asset不能获取AsserManager二进制流的方式获取)
        //anim  (xml动画文件)
        int color = this.getResources().getColor(R.color.colorAccent);
        this.getWindow().setBackgroundDrawableResource(R.color.colorAccent);
        //dimen尺寸资源
        //drawable  图片资源文件

        //view 的子类为vidget
        //相对位置  layout_height
        //wrap 内容多少   组件多大
        //ems 多少个字
        //fill  和父窗口一直  在定义 android:height不受影响
        //android:ems="2" 显示几个字  多了换行
        //android:gravity  文本位置设置

        //文本框
        TextView textView = (TextView) findViewById(R.id.textView);
        textView.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                //文本框内容
                String content = s.toString();
            }
        });


        textView.setFilters(new InputFilter[]{

                //实现自定义过滤
                new InputFilter() {
                    @Override
                    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
                        return null;
                    }
                }


        });

        //Spinner下拉列表
        //数组适配器
        //ArrayAdapter

        //LinearLayout  线性布局    布局可以相互嵌套
        //RelativeLayout 相对布局 1位置  2边距  3对齐方式
        //FrameLayout 帧布局  从屏幕左上角(0,0)布局,进行叠加

    }


    //把listener 和按钮分离,可以重用
    private View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.add:
                    //Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT).show();
                    Toast toast = Toast.makeText(MainActivity.this,"添加",Toast.LENGTH_SHORT);
                    //设置显示位置
                    toast.setGravity(Gravity.CENTER,0,0);
                    toast.show();

                    //通知
                    //notification
                    break;
                default:
                    Log.i("app","测试");
            }


        }
    };


    //下拉列表会用到
    class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return 0;
        }

        @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) {
            return null;
        }
    }

}

  

以上是关于android 基础的主要内容,如果未能解决你的问题,请参考以下文章

Android 实用代码片段

Android 实用代码片段

Android Fragments 基础知识:为啥?这在概念上是错误的吗?

如何使用 Android 片段?

如何从Android中的片段单击按钮打开片段

android小知识点代码片段