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属性,在原图小于(组件),所展示的效果
ScaleType属性,在大于组件在图中展示的效果
设定拓展硬件读取权限(本次读取内存卡)
图片局部放大功能
判断内存卡情况,取到内存卡的绝对路径
(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*
- 评分系统
- 详细介绍