Android基础入门:Paint API之—— MaskFilter(面具)
MaskFilter 是 Android 中 Paint 类中的一个特殊功能,它用于在绘制图形时对图形进行处理,通常用于实现一些特殊的效果。MaskFilter 可以用来模糊、浮雕、发光等。以下是一些常用的 MaskFilter 类:1. BlurMaskFilter(模糊效果): BlurMaskFilter 用于为图形添加模糊效果,构造方法中的参数 radius 表示模糊半径。 Paint paint = new Paint(); float blurRadius = 20f; MaskFilter blurMaskFilter = new BlurMaskFilter(blurRadius, BlurMaskFilter.Blur.NORMAL); paint.setMaskFilter(blurMaskFilter);2. EmbossMaskFilter(浮雕效果): EmbossMaskFilter 用于为图形添加浮雕效果,构造方法中的参数 direction 表示光源的方向,ambient 是环境光强度,specular 是镜面光强度,blurRa...
Android基础入门:绘图类实战示例
以下是一个简单的Android绘图实战示例,使用Canvas、Paint和Path来绘制一个自定义的图形:1. 创建一个新的CustomView类,继承自View:public class CustomView extends View { private Paint paint; private Path path; public CustomView(Context context) { super(context); init(); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { paint = new Paint(); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); pa...
Android基础入门:三个绘图工具类详解
在Android中,有三个常用的绘图工具类:Canvas、Paint、Path。它们通常一起使用,用于绘制自定义的图形和图像。以下是对这三个工具类的详细解释:1. Canvas(画布):Canvas是Android图形库的基础类之一,它提供了绘制图形的方法。你可以通过Canvas对象绘制各种形状、文本、位图等。Canvas通常与View的onDraw()方法一起使用。重要方法: drawColor(int color): 在整个Canvas上绘制单一颜色。 drawText(String text, float x, float y, Paint paint): 在指定位置绘制文本。 drawRect(RectF rect, Paint paint): 在指定的矩形区域绘制矩形。 drawCircle(float cx, float cy, float radius, Paint paint): 在指定位置绘制圆。 drawBitmap(Bitmap bitmap, float left, float top, Paint paint): 在指定位置绘制位图。2. Paint(画笔):...
Android基础入门:Bitmap引起的OOM问题
在Android开发中,OutOfMemoryError(OOM)是一个常见的问题,特别是在处理大图或者频繁加载图像的情况下。Bitmap对象的创建和处理可能导致内存溢出问题。以下是一些处理Bitmap引起的OOM问题的方法:1. 避免加载过大的图片: 如果你知道你的图片过大,可以在加载之前对图片进行缩放。使用BitmapFactory.Options来设置inSampleSize参数,以减少图片的像素数量。这样可以有效降低内存占用。 BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // 缩放为原来的1/2 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image, options);2. 使用inJustDecodeBounds获取图片大小: 在加载图片之前,可以通过设置inJustDecodeBounds为true来获取图片的宽高信息,...
Android基础入门:Bitmap(位图)全解析 Part 1
1. 什么是Bitmap?在Android中,Bitmap是表示位图图像的类。它用于在内存中存储图像像素的二进制数据。Bitmap对象可以来自文件、资源、网络等来源。它是Android图形处理的基础类之一,用于显示图像。2. 创建Bitmap对象:从资源中创建:Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);从文件中创建:Bitmap bitmap = BitmapFactory.decodeFile("/path/to/your/image.jpg");从InputStream中创建:InputStream inputStream = // your InputStreamBitmap bitmap = BitmapFactory.decodeStream(inputStream);3. Bitmap的基本属性和方法:获取宽度和高度:int width = bitmap.getWidth();int height = bitmap.getHeight...
Android基础入门:Android中的13种Drawable小结 Part 3
继续介绍Android中的一些常见的Drawable类型:14. VectorDrawable: - 类型:VectorDrawable - 描述:用于矢量图形,支持在不同屏幕密度和尺寸上进行缩放而不失真。 - 示例: <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24.0" android:viewportHeight="24.0"> <path android:fillColor="#FF000000" android:pathData="M12,2C6...
Android基础入门:Android中的13种Drawable小结 Part 2
继续介绍Android中的一些常见的Drawable类型:7. RotateDrawable: - 类型:RotateDrawable - 描述:用于旋转另一个Drawable。 - 示例: <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/my_image" android:fromDegrees="0" android:toDegrees="90"/>8. AnimationDrawable: - 类型:AnimationDrawable - 描述:用于实现帧动画,由一系列Drawable帧组成。 - 示例: <animation-list xmlns:android="http://schemas.android.com/apk/res/androi...
Android基础入门:Android中的13种Drawable小结 Part 1
Android中的Drawable是一种用于处理图形资源的机制,它允许你以资源的形式存储图形,然后通过引用它们的ID来使用这些图形。以下是Android中一些常见的Drawable类型,以及它们的用途:1. BitmapDrawable: - 类型:BitmapDrawable - 描述:用于表示位图图像。 - 示例: <BitmapDrawable android:src="@drawable/my_image" android:gravity="center" android:tileMode="repeat"/>2. ColorDrawable: - 类型:ColorDrawable - 描述:用于表示纯色。 - 示例: <ColorDrawable android:color="#FF0000" />3. ShapeDrawable: - 类型:ShapeDrawable - 描述...
Android基础入门:基于UDP协议的Socket通信
基于UDP协议的Socket通信相对于TCP而言更为简单,因为UDP是无连接的、无状态的通信协议。以下是一个基础入门的Android UDP通信的示例,包括UDP服务器端和UDP客户端。UDP服务器端代码:import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class UDPServer { public static void main(String[] args) { DatagramSocket datagramSocket = null; try { // 创建UDP服务器端的Socket,监听指定端口 datagramSocket = new DatagramSocket(9876); System.out.println("Server is listening on port 9876..."); ...
Android基础入门:基于TCP协议的Socket通信(2)
在继续讨论基于TCP协议的Socket通信的Android部分之前,请确保你已经了解并掌握了Android的基础知识,包括Activity、Thread、Permissions等方面。Android客户端代码:在Android应用中,网络操作不能在主线程中执行,因此需要使用异步任务(AsyncTask)或线程来执行。以下是一个简单的Android TCP客户端的例子:import android.os.AsyncTask;import android.os.Bundle;import android.util.Log;import androidx.appcompat.app.AppCompatActivity;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class TCPClientActivity extends AppCompatActivity { private static final St...
Android基础入门:基于TCP协议的Socket通信(1)
基于TCP协议的Socket通信通常涉及到两个主要部分:服务器端和客户端。在这里,我将提供一个简单的基础入门示例,演示如何创建一个简单的TCP服务器和一个TCP客户端。服务器端代码:import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class TCPServer { public static void main(String[] args) { ServerSocket serverSocket = null; try { // 创建服务器端的Socket,监听指定端口 serverSocket = new ServerSocket(12345); System.out.println("Server is listening on port 12...
Android基础入门:Socket学习网络基础准备
在Android中使用Socket进行网络通信需要一些基础准备。Socket是一种底层的网络通信方式,它可以在客户端和服务器之间建立连接,并通过输入流和输出流进行数据交换。以下是一些基础的准备步骤:1. 权限声明: 在AndroidManifest.xml文件中添加网络权限: <uses-permission android:name="android.permission.INTERNET" />2. 在独立线程中执行网络操作: 网络操作不能在主线程中执行,因为会导致应用无响应。通常,你需要使用AsyncTask、Thread或Handler等机制在独立线程中执行网络操作。3. 建立Socket连接: 在Android中,你可以使用Socket类来建立TCP连接。以下是一个简单的例子: import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public c...
Android基础入门:WebView处理网页返回的错误码信息
在Android中,你可以通过WebViewClient来处理WebView加载网页时的错误码信息。WebViewClient是一个用于处理WebView事件的类,包括加载页面、页面开始加载、页面加载完成等事件。以下是一些基础入门的方法,用于处理网页返回的错误码信息:1. 创建自定义的 WebViewClient 类: import android.graphics.Bitmap; import android.os.Build; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; public class MyWebViewClient extends WebViewClient { @Override public void onPageStarted(WebView view, Str...
Android基础入门:WebView缓存问题
在Android中,WebView是一个用于显示Web页面的组件,但在处理缓存时可能会遇到一些问题。下面是一些处理WebView缓存问题的基础入门信息:1. 启用缓存: 在使用WebView加载网页之前,确保已启用缓存。默认情况下,WebView是启用缓存的,但你可以通过以下方式确认: WebSettings webSettings = webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); 如果需要强制刷新,可以使用LOAD_NO_CACHE: webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);2. 清除缓存: 如果你需要在特定时刻清除WebView缓存,可以使用以下代码: webView.clearCache(true);3. 缓存路径设置: 你可以设置WebView缓存的路径,以便更好地控制缓存。例如: webSettings.setAppCachePath("/data/data/you...
Android基础入门:WebView文件下载
在 Android 中,WebView 文件下载通常涉及到监听 WebView 的下载请求并使用系统下载管理器(DownloadManager)进行文件下载。以下是实现 WebView 文件下载的基本步骤:1. 添加网络权限和文件下载权限:在 AndroidManifest.xml 文件中添加网络权限和文件下载权限:<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />2. 设置 WebView 下载监听:在 onCreate 方法中,为 WebView 设置下载监听:WebView webView = findViewById(R.id.webView);webView.setDownloadListener(new DownloadListener() { @Override public...
Android基础入门:Android 4.4后WebView的一些注意事项
在 Android 4.4(KitKat)之后,WebView 发生了一些变化,并引入了 Chromium 内核。这些变化带来了一些注意事项,特别是在处理 WebView 的行为和性能方面。以下是 Android 4.4 之后使用 WebView 时的一些重要注意事项:1. 使用 WebView 组件:在布局文件中使用 WebView 组件,而不是 WebView 的子类(例如 WebViewClient 和 WebChromeClient):<WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/>2. 启用硬件加速:在 AndroidManifest.xml 文件中,确保应用启用硬件加速:<application android:hardwareAccelerated="true" ...> ...
Android基础入门:WebView和JavaScrip交互基础
在 Android 中,通过 WebView 与 JavaScript 进行交互是一项常见的任务。这种交互方式使得 Android 应用能够与 WebView 中加载的网页进行数据传递和相互调用。以下是基本的 WebView 和 JavaScript 交互的步骤:1. 在 WebView 中启用 JavaScript:确保在 WebSettings 中启用 JavaScript:WebSettings webSettings = webView.getSettings();webSettings.setJavaScriptEnabled(true);2. 在 WebView 中设置 JavaScript 接口对象:创建一个 Java 对象,并通过 addJavascriptInterface 方法将其暴露给 JavaScript:public class WebAppInterface { @JavascriptInterface public void showToast(String message) { Toast.makeText(context, m...
Android基础入门:WebView(网页视图)基本用法
WebView 是 Android 中用于显示网页内容的视图组件,它允许你在应用中嵌入浏览器功能。以下是 WebView 的基本用法:1. 在布局文件中添加 WebView:在你的布局文件(例如 activity_main.xml)中添加 WebView:<WebView android:id="@+id/webView" android:layout_width="match_parent" android:layout_height="match_parent"/>2. 在 Activity 中获取 WebView 的引用:在你的 Activity 中获取 WebView 的引用,并设置基本的配置:import android.os.Bundle;import android.webkit.WebSettings;import android.webkit.WebView;import androidx.annotation.Nullable;import androidx.appcompat...
Android基础入门:Android 调用 WebService
在 Android 中调用 WebService 通常使用 SOAP(Simple Object Access Protocol)协议或 RESTful API。SOAP 是一种基于 XML 的协议,而 RESTful API 则可以使用 XML 或 JSON 格式的数据。以下是使用 SOAP 协议调用 WebService 的基本步骤:1. 添加网络权限:在 AndroidManifest.xml 文件中添加网络权限:<uses-permission android:name="android.permission.INTERNET" />2. 使用 HttpURLConnection 发送 SOAP 请求:import android.os.AsyncTask;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.HttpURLConnec...
Android基础入门:Android 文件下载(2)
在上一个例子中,我们展示了使用 HttpURLConnection 进行文件下载的简单实现。在更复杂的应用中,通常会使用一些现代的网络库,例如 OkHttp,以提供更强大、灵活和高性能的文件下载功能。以下是使用 OkHttp 进行文件下载的示例:1. 添加OkHttp库依赖:在 build.gradle 文件中添加 OkHttp 的依赖:implementation 'com.squareup.okhttp3:okhttp:4.9.1'请确保使用最新版本的 OkHttp。2. 实现文件下载的 AsyncTask 使用 OkHttp:import android.os.AsyncTask;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import okhttp3.ResponseBody;import java.io.FileOutputStream;import java.io.InputStream;public class FileDownloadTask ext...