Android进阶主要知识总结上版

Android进阶

    • 适配器(1.ArrayAdapter 2.SimpleAdapter)
    • AutoCompleteTextView(自动完成编辑框)
    • GridView(网格布局--手机界面)
    • CalendarView(日历视图)
    • HorizontalScrollView(横向滑动视图)
    • ScrollView(滚动视图)
    • 跳转界面
    • 对话框
      • 消息提示对话框
      • 简单列表对话框
      • 单选列表对话框
      • 多选列表对话框
      • 自定义对话框
    • 通知
      • 发送通知(setOnClickListener)
      • 消除按钮的点击事件(setOnClickListener)
    • MediaPlayer(播放音乐的对象)
    • SoundPool(音效池)
    • VideoView(视频控件)
    • create 9-patch file作图工具
    • 圆角设置
    • Textview常用样式属性
    • 自定义布局文件的样式
  • 第四章
    • Intent对象
      • 一键拨号
      • 一键访问网络
    • 关于Activity之间传递数据
      • 案例一:登录
      • 案例二:体重

适配器(1.ArrayAdapter 2.SimpleAdapter)

简单适配器(ArrayAdapter)
Java代码:
1.声明
2.赋值 准备数据
3.创建一个数组适配器(去放数据)
第一个参数:类的名称
第二个参数:资源名字
第三个参数:数据
4.为listView添加数据
5.给listView设置一个列表单击监听(setOnItemClickListener)

//显示列表内容(int position:你点的是第几条)
Toast.makeText
     (ArrayAdapterActivity.this,data[position],Toast.LENGTH_SHORT).show();

复杂适配器(SimpleAdapter )

Java代码:
1.声明
2.赋值 准备数据

//把准备好的数据存到一个List里面
  List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
   //通过循环往list里面添加数据
    for (int i=0;i<title.length;i++){ 
    //先添加到map
    	Map<String,Object> map=new HashMap<String,Object>();  
    	map.put("title",title[i]); //文字
    	map.put("img",img[i]);//图片
    //后添加list
    	list.add(map);

3.创建一个数组适配器(去放数据)
第一个参数:类的名称
第二个参数:数据
第三个参数:资源名字
第四个参数:map的key值
第五个参数:map的key对应的value放到哪里去

SimpleAdapter simpleAdapter=
	new SimpleAdapter( SimpleAdapterActivity.this,
	list,
	R.layout.item1,
	new String[]{"title","img"},
	new int[]{R.id.textView4,R.id.imageView});

4.为listView添加数据
5.给listView设置一个列表单击监听(setOnItemClickListener)
//显示列表内容(int position:你点的是第几条)

Toast.makeText
    (SimpleAdapterActivity.this,data[position],Toast.LENGTH_SHORT).show();

AutoCompleteTextView(自动完成编辑框)

属性:
android:completionThreshold=“3” 输入第几个开始提示
Java代码:用简单适配器装数据

GridView(网格布局–手机界面)

属性:android:numColumns=“4” 一条放几个东西
Java代码:用复杂适配器装数据

CalendarView(日历视图)

Java代码:
1.声明
2.赋值

//3.获取当前选中的日期
//(1)获取默认值
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日");
date=simpleDateFormat.format(calendarView.getDate());
//(2)获取改变之后的日期(setOnDateChangeListener) 
date=year+"年"+(month+1)+"月"+i+"日";

4.设置点击事件(setOnClickListener)

HorizontalScrollView(横向滑动视图)

ScrollView(滚动视图)

里面一定要包一个先写布局,在线性布局里面写要滑动的东西

跳转界面

给按钮设置跳转事件(setOnClickListener)
第一个参数表示当前类的名字
第二个参数表示要启动类的名字

 Intent intent=new Intent(OneActivity.this,TwoActivity.class);
 startActivity(intent);

结束:
给按钮设置返回事件(setOnClickListener)

 finish();

对话框

消息提示对话框

//1.创建对话框对象  
 AlertDialog.Builder builder=
 		new AlertDialog.Builder(DuiHuaKuangActivity.this); 
//2.设置对应的属性
 builder.setTitle("温馨提示"); //标题
 builder.setMessage("请多喝水!"); //内容
 //3.确定按钮(setPositiveButton)   取消按钮(setNegativeButton)
 //4.显示
 builder.show(); 

简单列表对话框

 //1.创建对话框对象
 AlertDialog.Builderbuilder=
 	new AlertDialog.Builder(DuiHuaKuangActivity.this);
//2.设置对应的属性
builder.setTitle("你想吃的水果");//标题
builder.setItems(data, new DialogInterface.OnClickListener()//设置列表
//3.显示 builder.show();

单选列表对话框

//1.创建对话框对象
AlertDialog.Builder builder=
	new AlertDialog.Builder(DuiHuaKuangActivity.this);
//2.设置需要属性
 builder.setTitle("你想要选的水果"); //标题
 //单选列表
 builder.setSingleChoiceItems(data, 1, new DialogInterface.OnClickListener()
 //获取选中列的内容
  xz=data[i];
//3.显示
builder.show();

多选列表对话框

//1.创建对话框对象
AlertDialog.Builder builder=
	new AlertDialog.Builder(DuiHuaKuangActivity.this);
//2.设置需要的属性
builder.setTitle("你想要选的水果");//标题 
//设置多选列表
builder.setMultiChoiceItems(data,zt,newDialogInterface.OnMultiChoiceClickListener)
//点击了多选列表(int i)表示点击的是第几项,(boolean b)表示当前项的状态
    zt[i]=b; 
//3.确认按钮(setPositiveButton)
//通过循环判断哪几项被选 
  for(int j=0;j<zt.length;j++){ 
     if (zt[j]==true){
        //显示出来
        str+=data[j];
      } 
}
//4.显示
builder.show(); 

自定义对话框

//1.创建对话框对象
AlertDialog.Builder builder=
	new AlertDialog.Builder(DuiHuaKuangActivity.this);
//2.设置需要的属性
builder.setTitle("你想选中的水果"); //标题
//自定义的部分(适配器)把数据转换成List
List<Map<String,Object>> list=new ArrayList<>();
 for (int i=0;i<img.length;i++){
 	 Map<String,Object> map=new HashMap<>();
 	 map.put("data",data[i]);
 	 map.put("img",img[i]);
 	 list.add(map);
 } 
//3.先创建一个复杂适配器
//4.给对话框设置设配器
builder.setAdapter(simpleAdapter, new DialogInterface.OnClickListener()
//5.显示
builder.show();

通知

发送通知(setOnClickListener)

Java代码:
1.声明
2.赋值
3发送通知按钮(setOnClickListener)

//1.创建一个通知管理器对象(系统提供的服务)--- (8.0以下版本成功)
manager= (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
//2.通道ID
String channelId="app";
//3.判断安卓的Api版本
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.O){ 
//手机的安卓版本>=8.0,需要借助通道
//创建通道
NotificationChannel channel=new
  NotificationChannel(channelId,"a",NotificationManager.IMPORTANCE_DEFAULT);
manager.createNotificationChannel(channel); 
} 
//进阶(可跳转的通知
 Intent intent=new 
    Intent(NotificationActivity.this,DuiHuaKuangActivity.class);
//Intent升级版(延时执行的跳转)
PendingIntent pendingIntent=
	   PendingIntent.getActivity(NotificationActivity.this,0,intent,0);
 //4.创建通知对象
 Notification notification=  new 
 		NotificationCompat.Builder(NotificationActivity.this,channelId)
 		.setContentTitle("特别关注@余隐")
 		.setContentText("正在直播,速来观看,不要错过哦!")
     		.setSmallIcon(R.drawable.email)
    		.setWhen(System.currentTimeMillis())
		.setLargeIcon(BitmapFactory.decodeResource
 		(getResources(),R.drawable.email))
 		.setContentIntent(pendingIntent)  	  //跳转 
		.setAutoCancel(true)              //自动清空
 		.build();
//5.用通知管理器发送通知
	manager.notify(1,notification);

消除按钮的点击事件(setOnClickListener)

manager.cancelAll();	

MediaPlayer(播放音乐的对象)

Java代码:
1.声明 创建一个能够播放音乐的对象
2.赋值
3播放(start())、暂停(pause())等按钮(setOnClickListener)

SoundPool(音效池)

Java代码:
1.声明

//准备1  创建音效池的场景属性
AudioAttributes att=new AudioAttributes.Builder()
                .setUsage(AudioAttributes.USAGE_GAME)
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)                                	
		.build(); 
 //准备2 创建一个音池对象(必须同时初始化一些相应的一些设置、场景以及音效池的属性)   
 soundPool=new SoundPool.Builder()
 .setAudioAttributes(att)
 .setMaxStreams(10)
 .build();
 //准备3 将raw中的资源存入到hasmap里
final HashMap<Integer,Integer> musicId=new HashMap<>();
        musicId.put(1,soundPool.load(this,R.raw.yx1,1));
        musicId.put(2,soundPool.load(this,R.raw.yx2,1));
        musicId.put(3,soundPool.load(this,R.raw.yx3,1));
        musicId.put(4,soundPool.load(this,R.raw.yx4,1));
	musicId.put(5,soundPool.load(this,R.raw.yx5,1));
//2.赋值
//3.设置点击事件(setOnClickListener)
if (play.getText().equals("play")){  
        id=soundPool.play(musicId.get(count),1,1,
        		0,//优先级
        		0,//是否循环 
        		1);
        
        play.setText("pause");
        }else {
              soundPool.pause(id); 
              play.setText("play");
         }
 }
下一首按钮(setOnClickListener) 
 if (count>=5){
     count=1;
  }else {
    count++;  
 }
 //下一首
 if (play.getText().equals("pause")){ 
      soundPool.pause(id);//暂停
  } 
       id=soundPool.play( musicId.get(count),1,1,
       			0,  //优先级 
       			0,  //是否循环    
       			1);
       	play.setText("pause"); 

VideoView(视频控件)

Java代码:
1.声明 媒体控制对象
2.赋值
补充知识:首先找到要怎么传东西的媒介在Android-studio–tools–monitor.bat双击运行,
然后file(向模拟器传入或者传出文件找到mmt—shell–emulated–0)

//视频资源的获取
File vide=new File("/mnt/sdcard/dmx.mp4");
/判断视频是否存在
if (vide.exists()==true){
      //有这个视频
      //1.让视频播放窗口与视频资源关联上-- 相对路径(模拟器里面的路径) 
        videoView.setVideoPath(vide.getAbsolutePath());
     //2.让视频播放器窗口与控制器关联
       videoView.setMediaController(mc);
     //3.播放
       mc.setMediaPlayer(videoView); MediaController (媒体控制对象) 

create 9-patch file作图工具

是一个可以让你制作自动调整大小来适应视图内容和屏幕大小的图片位图的所及即所得的工具。基于图像中的作图指示,图像中被选中的部分呈水平或垂直分布,简单来说,拉大或者拉小不会失真

圆角设置

目录:res–drwable–shape

  <!--先添加一个背景填充-->
  <solid android:color="@color/drawable_button" />
  <!--圆角的效果-->
  <corners android:radius="@dimen/font10"/>
  <!--渐变-->
  <gradient android:startColor="@color/white" android:endColor="#0f0" android:angle="90"/>
   <!--描边--> 
   <stroke android:color="@color/balnk" android:width="@dimen/font15"/>

Textview常用样式属性

属性名称 描述
android: autolink 设置是否当文本为URL接/ email/电话号码/map时,文本显示为可点击的链接,可选值(none/ web/email/ phone/map/all )
android: cursorvisible 设定光标为量示我,默认显示
android: digits 设置允许输入耶些字符。如"1234567890.+'%n0
android: drawableBottom 在text的下方输出一个 drawable
android: drawableleft 在text的方边输出一个 drawable
android: drawableright 在text的右边轴出一个 drawable
android: drawable Top 在text的正上方出一个 drawable
android:drawablepadding 设置text与 drawable(图片)的间隔,与 drawableleft.drawableright、 drawable Top、 drawable Bottomー同使用,可设置为负数,单独使用没有效果
android: llipsize 设置当文字过长时,该控件该如何显示,有如下值设直:“ start"-台珞号显示在开头:"end"台略号显示在结尾;“ middle"省略号显示在中间
android hint Text为空时显示的文字提示信息,可通过 textcolorhinti设置提示信息的色。此属性在 Editview中使用。任是世处也可以使用
android: lines 设置文本的行数,如果设置两行就会显示两行,即使第二行没有数据
android: maxlines 设文本的最大显示行数,与 width或 layout width结含使用,超出部分自动換行,超出行数将不显示
android mainlines 设置文本的最小行,与 lines类似

自定义布局文件的样式

先建一个java class–继承LinearLayout
– (Context context, AttributeSet attr有参构造方法)
–声明所需要的图片和文本控件–赋值
–加载自定义布局文件的样式

LayoutInflater inflater=(LayoutInflater) context.
			getSystemService(Context.LAYOUT_INFLATER_SERVICE);

下面的代码是:

	//设置按钮图片
	public void setImg(int resid){ 
		imageView.setImageResource(resid);
	}
	//设置按钮文字
	public void setText(String resid){ 
		textView.setText(resid);
	}

接下来建一个空的Activity用来使用我们自定义按钮.xlm文件(调用)

<com.hl.android004.MyButton
	android:layout_width="@dimen/font12"   
	android:layout_height="@dimen/font13"   
	android:id="@+id/setting"        
	android:background="@drawable/imgbutton"/> 
<com.hl.android004.MyButton
 	android:layout_width="@dimen/font12" 
	android:layout_height="@dimen/font13"      
	android:id="@+id/exit"        
	android:background="@drawable/imgbutton"/>

Java代码:

//声明
     MyButton setting;
     MyButton exit;
     @Override
         protected void onCreate(Bundle savedInstanceState) {        
         super.onCreate(savedInstanceState);        
         setContentView(R.layout.activity_my_button_user);     
         //赋值
            setting=findViewById(R.id.setting);
            exit=findViewById(R.id.exit);
	    setting.setText("设置");  //按钮里的文字  
	    setting.setImg(R.drawable.setting); //按钮里的图片
	    exit.setText("退出");
	    exit.setImg(R.drawable.exit);
 }

第四章

Intent对象

一键拨号

Java代码:1.声明2.赋值3.设置点击事件(setOnClickListener)

//1.拨打号码准备
Uri uri=Uri.parse("tel:1008611");
//2.创建intent对象,第一个参数表示要做的事情,第二个表示的是地址(网址,号码....)
Intent intent=new Intent(Intent.ACTION_DIAL,uri);
//3.拨号
startActivity(intent);

一键访问网络

Java代码:1.声明2.赋值3.设置点击事件(setOnClickListener)

//点击之后,要访问网络
//1.准备网络
String userUrl=editText.getText().toString();
Uri uri=Uri.parse("https://"+userUrl);
//2.创建intent对象,第一个参数表示要做的事情,第二个表示的是地址(网址,号码....)
Intent intent=new Intent(Intent.ACTION_VIEW,uri);
//3.访问
startActivity(intent);

关于Activity之间传递数据

语法:如果想要在Activity中得到新打开Activity关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent,int requestCode)方法打开新的Activity,新的Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode,Intent data)方法实现,为了得到传回的数据,必须在前面的Activity重写onActivityResult(int requestCode,int resultCode,Intent data)的方法

案例一:登录

Java代码:1.声明2.赋值3.设置点击事件(setOnClickListener)
IntentToDataActivity:

//拿用户名和密码
String userName=username.getText().toString();
String password=pwd.getText().toString();
//1.创建intent对象
Intent intent = new Intent
      (IntentToDataActivity.this,IntentGetDataActivity.class);
//2.绑定数据到intent上
intent.putExtra("un",userName);
intent.putExtra("p",password);
//3.带数据的跳转
startActivity(intent);

IntentGetDataActivity:

//获取第一个页面传递过来的数据,并且显示在textView里
//获取数据
//1.获取intent对象
Intent intent=getIntent();
//2.取值
String userName = intent.getStringExtra("un");
String pwd = intent.getStringExtra("p");
//显示
textView.setText("用户名和密码分别是:\n"+userName+"\n"+pwd);

案例二:体重

Java代码:1.声明2.赋值3.设置点击事件(setOnClickListener)
CountWeight1Activity:
外面要定义一个性别:String sex;

//获取性别
if (man.isChecked()==true){
     sex="男";
}else {
     sex="女";
}
//获取身高
double h = Double.parseDouble(height.getText().toString());
//1.创建Intent对象
Intent intent = new Intent
      (CountWeight1Activity.this,CountWeight2Activity.class);
//2.绑定数据
intent.putExtra("sex",sex);
intent.putExtra("h",h);
//3.带数据的跳转
startActivity(intent);

CountWeight2Activity:
外面要定义一个体重:double weight;

//获取intent对象
Intent intent=getIntent();
//取值
String sex=intent.getStringExtra("sex");
//从intent里取值,除了getStringExtra这个方法,其他都有默认方法
double height=intent.getDoubleExtra("h",170);
//计算体重
if (sex.equals("男")){
   weight=(height-80)*0.7;
}else {
   weight=(height-70)*0.6;
}
//显示
textView.setText("你的性别是:"+sex+"\n你的标准体重是:"+weight);

你可能感兴趣的:(Android进阶主要知识总结上版)