Android界面基本设置

Android笔记

1.安卓屏幕显示改成横向或者纵向

1:在配置文件AndroidManifest.xml中对Activity节点添加
android:screenOrientation属性(landscape是横向,portrait是纵向)
android:screenOrientation="portrait"
android:screenOrientation="landscape"

2 设置动态权限

//判断是否有权限
if(ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
			//没有权限,申请权限,进入回调继续判断
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
        }
         @Override回调
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if(requestCode !=1 || grantResults[0]!=PackageManager.PERMISSION_GRANTED){
            Toast.makeText(MainActivity.this, "没有权限", Toast.LENGTH_SHORT).show();
        }
    }

3 一张图片切成多张Bitmap(根据x,y轴切割)

使用Bitmap中的静态方法:BItmap.createBitmap(BItmap,x轴,y轴,切的宽,切的高);

 public List<Bitmap> getImg( ){
        List<Bitmap>  list = new ArrayList<>();
        //要加载图片
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.file);
        for(int y=0;y<bitmap.getHeight();y+=bitmap.getHeight()/4){
            for (int x = 0;x<bitmap.getWidth();x+=bitmap.getWidth()/3){
            	//切割图片并存到list集合中
                list.add( Bitmap.createBitmap(bitmap,x,y,108,204));
            }
        }
       return list;
    }

4 自定义AlertDialog

① 画需要的UI
② 创建AlertDialog.Builder对象,通过该对象的setView()方法将view天骄的弹窗中

private AlertDialog.Builder  builder;
private AlertDialog alertDialog;
private View view1;
		view1 = LayoutInflater.from(this).inflate(R.layout.item,null,false);
        builder = new AlertDialog.Builder(this).setView(view1);
        builder.setCancelable(true);
        alertDialog=builder.create();
        //确定按钮
view1.findViewById(R.id.queding).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                EditText ip1 = view1.findViewById(R.id.ip);
                ip=ip1.getText().toString();
                EditText port1 =view1.findViewById(R.id.port);
                port = port1.getText().toString();
                EditText username1 =view1.findViewById(R.id.username);
                username=username1.getText().toString();
                EditText password1=view1.findViewById(R.id.password);
                password=password1.getText().toString();
                System.out.println(ip);
                System.out.println(port);
                System.out.println(username);
                System.out.println(password);
                //初始化
                cameraManager.setupInfo(textureView,"admin","admin","192.168.0.101","11");
               /* if(!TextUtils.isEmpty(ip) && !TextUtils.isEmpty(port) && !TextUtils.isEmpty(username) && !TextUtils.isEmpty(password)){

                    cameraManager.setupInfo(textureView,username,password,ip,port);
                }else{
                    Toast.makeText(MainActivity.this, "请输入完整信息", Toast.LENGTH_SHORT).show();
                }*/
                // 弹窗隐藏
                alertDialog.dismiss();
            }
        });
        
        //弹窗显示
        alertDialog.show();

 

5 控价移动

 move.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
            	//判断是那个控件
                switch (view.getId()) {
                    case R.id.move:
                    // 触发事件
                        switch (motionEvent.getAction()) {
                        // 手指按下
                            case MotionEvent.ACTION_DOWN:
                            // 获取手指在屏幕上的x和y
                                x= (int) motionEvent.getRawX();
                                y= (int) motionEvent.getRawY();
                                System.out.println(x);
                                System.out.println(y);
                                break;
                                //移动
                            case MotionEvent.ACTION_MOVE:
                            	//获取移动后手指的x和y
                                int dangx= (int) motionEvent.getRawX();
                                int dangy=(int) motionEvent.getRawY();
                             
                                //手指移动的距离
                                int zuix=dangx-x;
                                int zuiy=dangy-y;
                                //通过layout()方法设置控价的位置
                                move.layout(move.getLeft()+zuix,move.getTop()+zuiy,move.getLeft()+zuix+move.getWidth(),move.getTop()+zuiy+move.getHeight());
                                left=ding.getLeft()-100;
                                top=ding.getTop()-100;
                                right=ding.getRight()+100;
                                bottom=ding.getBottom()+100;
                                if(move.getTop()>=top && move.getTop()<=bottom&& move.getLeft()>=left && move.getLeft()<=right ||
                                        move.getBottom()>=top && move.getBottom()<=bottom && move.getRight()>=left && move.getRight()<=right ||
                                        move.getTop()>=top && move.getTop()<=bottom && move.getRight()>=left && move.getRight()<=right||
                                        move.getBottom()>=top && move.getBottom()<=bottom && move.getLeft()>=left && move.getLeft()<=right
                                ){

                                            ding.setText("刷卡");
                                }else{
                                    ding.setText("");
                                }
                                // 重新获取手指在屏幕上的x和y
                                x=dangx;
                                y=dangy;
                                break;
                        }
                        break;
                }
                return true;
            }
        });

6 帧动画

// ① 在drawable文件中创建animation-list的xml文件
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" //为false一直循环,true循环一次
    >
    <item   android:drawable="@drawable/f1" android:duration="80"/>
    <item   android:drawable="@drawable/f2" android:duration="80"/>
    <item   android:drawable="@drawable/f3" android:duration="80"/>
    <item   android:drawable="@drawable/f4" android:duration="80"/>
    <item   android:drawable="@drawable/f5" android:duration="80"/>
    <item   android:drawable="@drawable/f6" android:duration="80"/>
    <item   android:drawable="@drawable/f7" android:duration="80"/>
    <item   android:drawable="@drawable/f8" android:duration="80"/>

</animation-list>
② 在main.java中创建AnimationDrawableprivate AnimationDrawable animationDrawable;
//初始化,
 animationDrawable= (AnimationDrawable) imageView.getBackground();
 //开启
 animationDrawable.start();
 

7 日期控件

 //时间控件
    private Calendar calendar;
    private DatePickerDialog datePickerDialog;
    // 有两个按钮来判断是哪个按下
    public boolean startb=false,endb=false;
    // 初始化并创建时间控件
 calendar= Calendar.getInstance();
        datePickerDialog= new DatePickerDialog(this,this,calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)

        );
        // 通onDateSet回调事件来判断并给控件赋值
@Override
    public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
        if(startb){
            starttime_et.setText(String.format("%s-%s-%d",i,i1+1,i2));
            startb=false;
        }else if(endb){
            endtime_et.setText(String.format("%s-%s-%s",i,i1+1,i2));



        }

    }




8 属性动画—— 旋转、透明、动画暂停和恢复

// 旋转
 objectAnimator= ObjectAnimator.ofFloat(img_feng,"rotation",0f,360f);
 objectAnimator.setDuration(5000);
 // 透明
 objectAnimator1= ObjectAnimator.ofFloat(img_deng,"alpha",1f,0f,1f);
 objectAnimator1.setDuration(5000);
 //暂停
animator.pause()

//恢复
animator.resume()


9 获取手机屏幕的宽和高

 Display display = getWindowManager().getDefaultDisplay();
        Point point  = new Point();
        display.getSize(point);
        // 宽
        System.out.println(point.x);
        // 高
        System.out.println(point.y);

未完成…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值