欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar

程序员文章站 2022-06-04 16:18:13
...

ImageView 控件


 <ImageView
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:src="@drawable/s1"   //设置所充填的图片
            android:layout_gravity="center"
            android:id="@+id/iv_main_image"
            android:scaleType="centerInside"  //设置图片的充填模式
            />

通过JAVA可以设置属性:

ImageView对象.setImageAlpha(透明度数字组成,从0-255(0是最大透明));

ImageView对象.setImageResource(R.图片文件夹.图片); //更换图片


ScaleType属性,在原图小于(组件),所展示的效果

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar


ScaleType属性,在大于组件在图中展示的效果

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar

设定拓展硬件读取权限(本次读取内存卡)

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar


图片局部放大功能

判断内存卡情况,取到内存卡的绝对路径

(Environment 可以获取当前手机的一些信息,包括存储卡的信息,本次主要获取存储卡)

 //取拓展硬件(本次取当前手机内存卡)
 //Environment.getExternalStorageState() 此方法,取外部内存卡的状态
 //Environment.MEDIA_MOUNTED 内存卡的状态为**状态

 //判断意思为,本机,目前的内存条能用不        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//Environment.getExternalStorageDirectory() 取到内存卡
//Environment.getExternalStorageDirectory().getAbsolutePath(); 取到内存卡的绝对路径
//根目录 /storage/emulated/0  未ROOT的手机无法,看到

String abspath=Environment.getExternalStorageDirectory().getAbsolutePath();

取内存卡内的图片,通过Bitmap(绘图)实现布局放大

首先设定读取内存卡权限(上面的图片内就是)

xml文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    tools:context="com.example.examination_one.MainActivity"

    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >


        <ImageView      //主要展示图片组件
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:id="@+id/iv_main_imageOne"
            />


        <ImageView    //被截取下来的图片展示
            android:layout_width="250dp"
            android:layout_height="200dp"
            android:id="@+id/iv_main_imageTwo"
            />


    </LinearLayout>


</LinearLayout>

JAVA代码实现

package com.example.examination_one;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.icu.util.Calendar;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.Toast;

import java.io.File;
import java.util.ArrayList;
import java.util.Date;

public class MainActivity extends AppCompatActivity {

    private Bitmap bitmap;
    private File[] fileone;
    private ImageView imagetwo;
    private ImageView image;

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

        //取到展示图片的组件
        image = (ImageView) findViewById(R.id.iv_main_imageOne);

        //触摸的图片展示
        imagetwo = (ImageView) findViewById(R.id.iv_main_imageTwo);



        //取拓展硬件(本次取当前手机内存卡)
        //Environment.getExternalStorageState() 此方法,取外部内存卡的状态
        //Environment.MEDIA_MOUNTED 内存卡的状态为**状态
        //判断意思为,本机,目前的内存条能用不
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
           //Environment.getExternalStorageDirectory() 取到内存卡
           // Environment.getExternalStorageDirectory().getAbsolutePath(); 取到内存卡的绝对路径
            //根目录 /storage/emulated/0  未ROOT的手机无法,看到
              String  abspath=Environment.getExternalStorageDirectory().getAbsolutePath();

            //用内存卡的路径,创建一个文件对象
            File file=new File(abspath+"/image");

            //取到该路径下的所有文件(包含文件夹)
            fileone = file.listFiles();

            //我这个文件夹内全部是图片
               // decode编译  ,把文件图片数组中的第一个的设定,为绘图
            //Bitmap 绘图,BitmapFactory绘图工厂
            bitmap = BitmapFactory.decodeFile(fileone[0].getAbsolutePath());

            //把刚才产生的绘图对象,设置到图片Imageview组件中
            image.setImageBitmap(bitmap);

            //----------------------------------------------
            //实现图片布局放大,实现步骤:

            // 先把Imageview设定触摸事件
            image.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    //v 代表其实就是你的Imageview组件,不过我这边已经帮组件设置成了全局变量,所有这个值我就不用了
                    //event  可以通过此值,取到触摸的x及y轴坐标
                    float x=event.getX();
                    float y=event.getY();

                    //从原图上,截取受触摸部分,参数四五,是截取,大小
                    Bitmap bitmaptwo=Bitmap.createBitmap(bitmap,(int)x,(int)y,20,20);

                    //把截取到的新图,放入,局部放大组件中(第二个ImageView)展示
                    imagetwo.setImageBitmap(bitmaptwo);

                    return true;
                }
            });



        }



    }


}

ToggleButton、Switch

  • 其实这二个都是开关按钮。
  • ToggleButton 是点击开关
  • Switch滑动开关

ToggleButton

  • 属性
    • 它于Button相同,大多数的属性和Button相同
<ToggleButton android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textOn="开"   //设定开启状态下的按钮内的字
            android:textOff="关"  //设定关闭状态下的按钮内的字
            android:id="@+id/tb_main_switch"
            android:checked="false"   //初始状态,是关闭还是开启
            android:textStyle="italic|bold"  //按钮中的字体样式
            />
  • 效果图
  • ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBarImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar

Switch

  • 其实与ToggleButton 相似

    -属性

android:typeface="normal":设置字体类型  
android:track="":设置开关的轨迹图片  
android:textOff="开":设置开关checked的文字  
android:textOn="关":设置开关关闭时的文字  
android:thumb="":设置开关的图片  
android:switchMinWidth="":开关最小宽度  
android:switchPadding="":设置开关 与文字的空白距离  
android:switchTextAppearance="":设置文本的风格  
android:checked="":设置初始选中状态  
android:splitTrack="true":是否设置一个间隙,让滑块与底部图片分隔(API 21及以上)  
android:showText="true":设置是否显示开关上的文字(API 21及以上)  
  • 初始状态下的效果图

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar


SeekBar

  • SeekBar是进度条。我们使用进度条时,可以使用系统默认的进度条;也可以自定义进度条的图片和滑块图片等
 <!-- 
        max=100,代表它的取值范围是0-100,共101个值;
        progress=20,代表默认值是20
        progressDrawable,表示SeekBar的背景图片
        thumbe,表示SeekBar的滑块图片  
    -->
    <SeekBar
        android:id="@+id/seekbar_self"
        android:layout_width="620px"  
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="20"
        android:progressDrawable="@drawable/bg_bar"  
        android:thumb="@drawable/thumb_bar" /> 

ImageView、设定拓展硬件权限(读取内存卡)、ToggleButton、Switch、RatingBar、SeekBar


* RatingBar*

相关标签: android imageview