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

来源:互联网 发布:java模拟器安卓版官网 编辑:程序博客网 时间:2024/06/11 02:26

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小的情况下


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

图片比ImageView大的情况下

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

这里写图片描述


图片局部放大功能

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

(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"  //按钮中的字体样式            />
  • 效果图
  • 这里写图片描述这里写图片描述

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及以上)  
  • 初始状态下的效果图

这里写图片描述


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" /> 

这里写图片描述


* RatingBar*

  • 评分系统
  • 详细介绍
阅读全文
0 0