Android——基本控件(下)(十六)

news2024/12/26 11:01:18

1. 随笔提示文本:AutoCompleteTextView

1.1 知识点

(1)了解随笔提示功能的应用;

(2)可以使用AutoCompleteTextView类完成随笔提示功能的实现。

1.2 具体内容

这个组件就是提供了一个文本输入的功能,但是相对之前的EditText功能会更丰富一些。

范例:

package com.example.autocompletetextview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class AutoCompleteTextViewActivity extends Activity {
	private AutoCompleteTextView autoText = null;
	private String data[] = {"爱科技有限公司","xx理工大学","软件学院","Android实训","企业实训","中国人民"};
	private ArrayAdapter<String> adapter = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_auto_complete_text_view);
		this.autoText = (AutoCompleteTextView) super.findViewById(R.id.myautotext);
		//定义数据集
		adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,data);
		this.autoText.setAdapter(adapter);//设置数据集
	}
}

 1.3 小结

(1)使用随笔提示功能可以很好的帮助用户进行文本信息的输入。

2. 拖动条:SeekBar

2.1 知识点

(1)掌握拖动条:SeekBar的主要作用;

(2)掌握SeekBar组件的事件处理操作;

(3)可以使用SeekBar组件控制手机的屏幕亮度;

2.2 具体内容

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
	<SeekBar 
	    android:id="@+id/seekbar"
	    android:layout_width="match_parent"
        android:layout_height="wrap_content"
	    />
    <TextView
        android:id="@+id/mytext"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

 之后就是这个拖动条在拖动的时候,在文本显示组件中显示拖动的位置。

package com.example.seekbarproject;

import android.app.Activity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

public class SeekBarActivity extends Activity {
	private TextView text = null;
	private SeekBar seekbar = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_seek_bar);
		this.text = (TextView) super.findViewById(R.id.mytext);
		this.seekbar = (SeekBar) super.findViewById(R.id.seekbar);
		this.text.setMovementMethod(ScrollingMovementMethod.getInstance());//设置TextView滚动显示
		this.seekbar.setMax(100);//设置拖动的最大值
		this.seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			
			/**
			 * 开始拖动
			 */
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
				SeekBarActivity.this.text.append("开始拖动:"+ seekBar.getProgress()+"\n");
			}
			
			/**
			 * 拖动中
			 */
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				SeekBarActivity.this.text.append("正在拖动:"+ seekBar.getProgress()+"\n");
			}
			
			/**
			 * 停止拖动
			 */
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				SeekBarActivity.this.text.append("停止拖动:"+ seekBar.getProgress()+"\n");
			}
			
		});
	}
}

那么对于我们的SeekBar来说,可以完成一些更有意义的实际操作,比如说在程序中使用拖动条进行拖动显示图片。

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@drawable/head0"/>
    <SeekBar 
	    android:id="@+id/seekbar"
	    android:layout_width="match_parent"
        android:layout_height="wrap_content"
	    />
</LinearLayout>

package com.example.seekbarproject;

import android.app.Activity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SeekBarActivity extends Activity {
	private ImageView img = null;
	private SeekBar seekbar = null;
	private int pic[] = { R.drawable.head0, R.drawable.head1, R.drawable.head2,
			R.drawable.head3, R.drawable.head4, R.drawable.head5,
			R.drawable.head6, R.drawable.head7, R.drawable.head8,
			R.drawable.head9,R.drawable.head10,R.drawable.head11};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_seek_bar);
		this.img = (ImageView) super.findViewById(R.id.img);
		this.seekbar = (SeekBar) super.findViewById(R.id.seekbar);
		this.seekbar.setMax(11);// 设置拖动的最大值
		this.seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			/**
			 * 开始拖动
			 */
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
			}

			/**
			 * 拖动中
			 */
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				//再拖拽过程中修改显示的图片
				SeekBarActivity.this.img.setImageResource(SeekBarActivity.this.pic[progress]);
				
			}

			/**
			 * 停止拖动
			 */
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
			}

		});
	}
}

要说的一点,对于这个程序,必须使用真机测试。

package com.example.seekbarproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class SeekBarActivity extends Activity {
	private SeekBar seekbar = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_seek_bar);
		this.seekbar = (SeekBar) super.findViewById(R.id.seekbar);
		this.seekbar.setMax(100);// 设置拖动的最大值
		this.seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

			/**
			 * 开始拖动
			 */
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {
			}
			/**
			 * 拖动中
			 */
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {
				//再拖拽过程中修改屏幕亮度
				SeekBarActivity.this.setScreenBrightness(progress);
			}
			/**
			 * 停止拖动
			 */
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
			}

		});
	}
	private void setScreenBrightness(int num){
		WindowManager.LayoutParams layoutParams = getWindow().getAttributes();//取得Window属性
		layoutParams.screenBrightness = (float) (num/100.0);//改变属性值
		super.getWindow().setAttributes(layoutParams);//设置属性
	}
}

 2.3 小结

(1)使用SeekBar组件可以进行拖动条的操作;

(2)通过WindowManager.LayoutParams可以进行屏幕亮度的调节;

3. 信息提示框:Toast

3.1 知识点

(1)掌握Toast信息提示框的基本使用方法;

(2)可以控制Toast信息提示框的显示内容及位置改变。

3.2 具体内容

Toast是一个简短的信息提示框,可以在一定的时间内显示信息,而后会自动的隐藏。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/longshow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="长时间显示信息提示框" />
    <Button
        android:id="@+id/shortshow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="短时间显示信息提示框" />

</LinearLayout>

package com.example.toastproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class ToastActivity extends Activity {
	private Button longBut = null;
	private Button shortBut = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_toast);
		this.longBut = (Button) super.findViewById(R.id.longshow);
		this.shortBut = (Button) super.findViewById(R.id.shortshow);
		this.longBut.setOnClickListener(new OnClickListenerLongImpl());
		this.shortBut.setOnClickListener(new OnClickListenerShortImpl());
	}
	class OnClickListenerLongImpl implements OnClickListener{
		@Override
		public void onClick(View v) {
			//显示信息提示框
			Toast.makeText(ToastActivity.this, "长时间显示的信息", Toast.LENGTH_LONG).show();
		}
	}
	class OnClickListenerShortImpl implements OnClickListener{
		@Override
		public void onClick(View v) {
			Toast.makeText(ToastActivity.this, "短时间显示的信息", Toast.LENGTH_SHORT).show();
		}
	}
}

在默认情况下,所有的信息提示都是在屏幕的底部居中显示,现在可以进行修改,第一是修改显示的位置,第二是修改显示内容。

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/longshow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自定义的信息提示" />

</LinearLayout>

package com.example.toastproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;

public class ToastActivity extends Activity {
	private Button longBut = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_toast);
		this.longBut = (Button) super.findViewById(R.id.longshow);
		this.longBut.setOnClickListener(new OnClickListenerLongImpl());
	}
	class OnClickListenerLongImpl implements OnClickListener{
		@Override
		public void onClick(View v) {
			//显示信息提示框
			Toast toast = Toast.makeText(ToastActivity.this, "爱科技有限公司", Toast.LENGTH_LONG);
			toast.setGravity(Gravity.CENTER, 60, 10);//设置对其方式
			//往信息提示框添加图片
			LinearLayout myToastView = (LinearLayout)toast.getView();
			ImageView img = new ImageView(ToastActivity.this);
			img.setImageResource(R.drawable.logo);
			myToastView.addView(img,0);//添加图片,表示图片在文字的上方
			toast.show();
		}
	}
}

3.3 小结

(1)Toast组件一般都用于进行信息操作提示;

(2)Toast也可以自定义显示内容,但是一般不会使用。

4. 图片切换:ImageSwitcher

4.1 知识点

(1)掌握ImageSwitcher和ViewFactory的使用;

(2)了解Animation的基本使用。

4.2 具体内容

如果说想要完成图片切换的操作,关键的问题就在于ViewFactory工厂的实用上。此接口有一个方法:public abstract View makeView () 

这个方法返回值是一个View,下面我们通过一段程序来观察。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageSwitcher
        android:id="@+id/myImageSwitcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/upImg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一张图片" />
        <Button
            android:id="@+id/nextImg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一张图片" />
    </LinearLayout>

</LinearLayout>
package com.example.imageswitcherproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageSwitcherActivity extends Activity {
	private ImageSwitcher myImageSwitcher = null;
	private Button upBut = null;
	private Button nextBut = null;
	private int imgData[] = {R.drawable.head0,R.drawable.head1,R.drawable.head2,
			R.drawable.head3,R.drawable.head4,R.drawable.head5,
			R.drawable.head6,R.drawable.head7,R.drawable.head8,
			R.drawable.head9,R.drawable.head10,R.drawable.head11,};
	private int imageCurrent = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.activity_image_switcher);
		this.myImageSwitcher = (ImageSwitcher) super.findViewById(R.id.myImageSwitcher);
		this.upBut = (Button) super.findViewById(R.id.upImg);
		this.nextBut = (Button) super.findViewById(R.id.nextImg);
		this.checkButtonEnable();
		this.myImageSwitcher.setFactory(new ViewFactoryimpl());
		this.myImageSwitcher.setImageResource(imgData[imageCurrent]);
		this.upBut.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				ImageSwitcherActivity.this.myImageSwitcher.setImageResource(ImageSwitcherActivity.this.imgData[--imageCurrent]);
				ImageSwitcherActivity.this.checkButtonEnable();
			}
			
		});
		this.nextBut.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
				ImageSwitcherActivity.this.myImageSwitcher.setImageResource(ImageSwitcherActivity.this.imgData[++imageCurrent]);
				ImageSwitcherActivity.this.checkButtonEnable();
			}
		});
	}
	private void checkButtonEnable(){
		this.upBut.setEnabled(true);//设置按钮可用
		this.nextBut.setEnabled(true);
		if(imageCurrent==0){
			this.upBut.setEnabled(false);//设置按钮不可用
		}else if(imageCurrent == imgData.length-1){
			this.nextBut.setEnabled(false);//设置按钮不可用
		}
	}
	class ViewFactoryimpl implements ViewFactory{
		@Override
		public View makeView() {
			ImageView img = new ImageView(ImageSwitcherActivity.this);
			img.setScaleType(ImageView.ScaleType.CENTER);//设置居中显示
			img.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));//设置布局参数
			return img;
		}
		
	}

}

程序能够正常的运行,而且进行按钮的设置,就差动画效果。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <ImageSwitcher
        android:id="@+id/myImageSwitcher"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" 
        android:inAnimation="@android:anim/slide_in_left"
        android:outAnimation="@android:anim/slide_out_right"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_horizontal" >
        <Button
            android:id="@+id/upImg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一张图片" />
        <Button
            android:id="@+id/nextImg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一张图片" />
    </LinearLayout>
</LinearLayout>

this.myImageSwitcher.setFactory(new ViewFactoryimpl());
		this.myImageSwitcher.setImageResource(imgData[imageCurrent]);
		this.myImageSwitcher.setAnimation( AnimationUtils.loadAnimation(this, android.R.anim.fade_in));//图片进入时的动画效果
		this.myImageSwitcher.setAnimation( AnimationUtils.loadAnimation(this, android.R.anim.fade_out));//图片出来时的动画效果

对于图片切换,关键的还是在于ViewFactory工厂的设置上,如果说不使用工厂的话,肯定会报错。

4.3 小结

(1)使用ImageSwitcher和ViewFactory可以实现图片的切换显示;

(2)用户可以使用Animation进行切换时的动画显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698676.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO改进教程:6.添加NAM-Net注意力机制

论文地址:https://arxiv.org/abs/2111.12419Github:https://github.com/Christian-lyc/NAM如果你是深度学习小白,阅读本文前建议先学习一下 📖《新手入门深度学习》如果你有一定基础,但是缺乏实战经验,可通过 📖《深度学习100例》 补齐基础另外,我们正在通过 🔥365…

window11系统打开VMware虚拟机,导致主机直接重启

问题描述&#xff1a; window11系统打开VMware虚拟机&#xff0c;直接导致主机直接重启 原因&#xff1a; 未开启“虚拟机平台”选项。 解决方式&#xff1a; 打开电脑“控制面板”&#xff0c;选择“程序”&#xff0c;在再选择程序中的“启用或关闭windows功能” 控制面板➡…

MyBatis 执行流程详解及示例代码

导言&#xff1a; MyBatis 是一个优秀的持久层框架&#xff0c;它简化了数据库操作的开发过程。本文将详细介绍 MyBatis 的执行流程&#xff0c;并提供相应的示例代码&#xff0c;帮助读者更好地理解和应用 MyBatis。 1. 创建 SqlSessionFactoryBuilder 对象 在 MyBatis 中&…

基于redis的bitmap实现签到功能(后端)

项目环境 MacOS springboot: 2.7.12 JDK 11 maven 3.8.6 redis 7.0.11 StringRedisTemplate 的key和value默认都是String类型 可以避免不用写配置类&#xff0c;定义key和value的序列化。 实现逻辑&#xff1a; 获取用户登录信息 根据日期获取当天是多少号 构建…

【服务器数据恢复】热备盘同步失败导致服务器崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; 两组分别由4块SAS硬盘组建的raid5磁盘阵列&#xff0c;ext3文件系统&#xff0c;通过LVM管理磁盘存储。 服务器故障&#xff1a; 一组raid5磁盘阵列中的1块硬盘故障离线&#xff0c;热备盘成功启用并开始同步数据&#xff0c;在同步还没有完成…

互联网保险驶入发展快车道,元保保险加速数字化突围

随着90后、00后这一群体逐渐进入婚育高峰期,加之相较60后、70后群体,这群互联网原住民已经成为保险消费的主力人群,互联网保险行业迎来了新的发展机遇,互联网平台恰似曾经辉煌的大卖场、集市、商场,成为汇聚流量的新平台,只不过,能量的漩涡更大,更聚焦。对此,元保集团创始人兼C…

记录一个Masonry 添加约束导致的label 文案展示不全的问题

问题如图&#xff0c;蓝色label 中的文字没有展示完全&#xff0c;后面还有“情。” 原因&#xff0c;我们使用masonry 布局的时候&#xff0c;宽度会有细微的误差&#xff0c;导致我们实际 添加的约束比我们期望的要小&#xff0c;就导致横向无法容下期望的文字宽度&#xf…

如何使用MySQL统计当月每日收益金额

如果要实现上图这个效果&#xff0c;这个SQL应该怎么写呢&#xff1f; 目录 1、实现思路 2、SQL实现 1、实现思路 首先&#xff0c;我们先实现查询当月每日的日期 。然后将查询结果与需要统计的表进行左连接即可。 SELECT DATE(DATE_SUB(CURRENT_DATE(), INTERVAL (DAY(CURRE…

微服务springcloud 10.config配置中心框架和rabbitmq的安装

config配置中心的作用&#xff1a;项目的yml 配置文件保存到 git 服务器&#xff0c;例如 github.com 或 gitee.com 微服务启动时&#xff0c;从服务器获取配置文件 1.新建 “Project”,命名为 config。注意这里的不是maven项目&#xff0c;而是project 2.将sp02,sp03,sp04,s…

git常用命令之Fetch

4. Fetch 命令-----------------------------------------------------------------------------作用延展阅读git fetch1. 拉取「远程仓库」的所有远程分支的最新Commit-ID 记录在 .git/FETCH_HEAD 文件中.若有多个分支则 FETCH_HEAD 内会有多行数据&#xff0c;该文件首行对应…

dbca添加实例时无法发现对方主机

有个12.2集群环境&#xff0c;需要添加一个实例&#xff0c;直接图形化启动dbca&#xff0c;第四步时只能发现本机&#xff0c;无法识别到另外一个节点&#xff0c;如下图 通过排查发现是oracle用户的密码过期了&#xff0c;细节如下 [roothydb1 ~]# su - grid Last login: W…

C++11关键字

decltype 根据表达式的类型自动推导类型 int main(void) {decltype(x) c 21.1; //赋值decltype((x)) d c; // 是一个引用decltype(x) e c; //d 120;cout << sizeof(int) << endl;cout << sizeof(c) << " c" << c << endl;…

【Rust】所有权

文章目录 所有权stack与heap所有权存在的原因所有权规则变量作用域String类型内存和分配变量与数据交互的方式1.Move2.Clone3.Copy 所有权与函数返回值与作用域引用借用可变引用悬空引用Dangling References引用的规则切片字符串切片将字符串切片作为参数传递其他类型的切片 所…

1.2 matlab信号分析编程基础

1.画正弦波 xlinspace(0,2*pi,100); ysin(x); plot(x,y);2.画方波 xlinspace(0,4*pi,100); ysquare(x); plot(x,y);3.矩阵赋值 4.标准函数 5.画图 title&#xff1a;标题 grid&#xff1a;开关网格线 叠加多条曲线 3.GUI画正弦波 Fs 44100; dt 1.0/Fs; T 1; N T/dt…

Acer宏碁笔记本电脑Aspire蜂鸟FUN S50-51原装Windows10系统镜像,恢复出厂系统

Acer宏碁笔记本电脑Aspire蜂鸟S50-51原厂Win10系统工厂模式恢复原装出厂OEM系统 系统自带所有驱动、办公软件、出厂主题壁纸LOGO、 Acer Care Center、Quick Access等预装程序 所需工具&#xff1a;32G或以上的U盘&#xff08;非必需&#xff09; 文件格式&#xff1a;多个I…

Java垃圾搜集算法和垃圾回收算法

垃圾回收主要针对的是JVM的堆内存&#xff0c;分为新生代和老年代。 按照以前的叫法&#xff0c;还有一个永久代&#xff0c;它在方法区里保存了class信息、静态变量、常量池等。 从jdk-1.8开始&#xff0c;方法区的实现发生了一些变化&#xff0c;取消了永久代的概念&#xff…

墨迹api实现天气预测

文章目录 需求背景解决效果接口地址index.vueweather.vue图标文件 视频效果 需求背景 使用墨迹天气api实现天气预报&#xff0c;空气质量预报功能 解决效果 接口地址 墨迹天气 index.vue <template><div class"dqhjjc-wrap"><div class"fir…

pytorch快速入门中文——03

神经网络 原文&#xff1a;https://pytorch.org/tutorials/beginner/blitz/neural_networks_tutorial.html#sphx-glr-beginner-blitz-neural-networks-tutorial-py 可以使用torch.nn包构建神经网络。 现在您已经了解了autograd&#xff0c;nn依赖于autograd来定义模型并对其进…

win10系统打开程序和功能的几种方式介绍

一&#xff0c;简介 在工作中常常会用到安装和卸载软件的功能&#xff0c;需要打开“程序和功能”&#xff0c;本文主要介绍如几种打开“程序和功能”的方法&#xff0c;供参考。 二&#xff0c;四种方法介绍 四种方法分别是&#xff1a; 从控制面板打开&#xff1b;通过运…

VsCode尝试在目标目录创建文件时发生一个错误

桌面右击vscode图标以管理员身份运行就可以了 结束语&#xff1a; 希望这篇文章能帮助到大家&#xff0c;如有不对之处&#xff0c;还请指正。愿我们一起成长。