自定义view

音乐播放器

≡放荡痞女 提交于 2020-01-10 00:25:57
MainActivity package com . example . mymusic ; import androidx . annotation . NonNull ; import androidx . appcompat . app . AppCompatActivity ; import android . Manifest ; import android . content . ContentResolver ; import android . content . pm . PackageManager ; import android . database . Cursor ; import android . media . MediaPlayer ; import android . net . Uri ; import android . os . Bundle ; import android . os . Handler ; import android . os . Message ; import android . provider . MediaStore ; import android . util . Log ; import android . view . LayoutInflater ; import android . view

UI绘制流程,让无数安卓工程师无从下手?一篇文章就教你读懂!

筅森魡賤 提交于 2020-01-09 23:50:23
前言 在android当中对于UI体系当中往往我们会在绘制UI的时候碰到各种各样的问题而不知道从何解决, 也有时需要开发更改自定义组件时,需要做自己的调整,或者是实现某个自定义特效时的思路不明确,想要达到去玩转UI的最为基础的部分,就是去全面的深入了解UI的绘制流程.所以接下来带大家去进行全面分析UI整体的绘制体系. 思路:android程序启动-→Activity加载并完成生命周期-→setContentView-→图形绘制 疑惑: 1.Android程序是如何启动,Activity生命周期如何调用? 2.在Activity onCreate当中我们的setContentView是如何将UI文件加载? 3.UI是如何绘制的? 答案: 1.Android程序流程 众所周知,我们的java程序想要开启需要依赖于main方法,也就是我们的程序入口(主线程)进入,但是在我们日常开发android程序的过程当中我们并没有发现main方法的存在,那么android当中的是如何开始运行的? 熟悉的朋友们可能都知道在android当中存在一个叫做ActivityThread的类,这个类代表的是android当中的主线程,而在这个类当中我们看到了比较熟悉的main方法,那么现在是否可以认为我们的android在打开app时是首先调用的是当前这个类的main,也就是此处为我们的启动点

Android 自定义Adapter实现多视图Item的ListView

◇◆丶佛笑我妖孽 提交于 2020-01-08 22:35:37
自定义Adapter实现多视图Item的ListView http://www.devdiv.com/adapter_item_listview-blog-20-7539.html 1、原理分析 Adapter对于ListView是非常重要的,它处于listView和数据源的中间,负责为ListView创建具体的视图。之前提到过ListView采用了View复用技术,即使需要显示大量的数据列表时它也能高效的工作,它总是试图复用已经存在的View。 下面就对View复用技术,做简单的讲解: 简单来说,假设一个ListView中存在7个Item,从上到下分别是Item1~Item7,当用户向上滑动屏幕时,Item1会滚动到屏幕区域以外,item1并没有被销毁,而是被放入了回收站(Recycler)。当ListView需要显示下一个item时,它会首先检查回收站里是否有可用的Item,刚好发现了item1,直接复用item1。ListView把获取到的Item1和新的位置(position8)传递给Adapter的getView方法,在getView方法中根据position8从数据源中取出对应的数据覆盖到item1,这时item1就变成了item8。最后,ListView把新生成item8显示到界面上。 而当ListView中存在不同视图的Item的时候,Adapter中存在一个int

Android原生控件 -- WebView

允我心安 提交于 2020-01-07 11:12:48
⒈用途    加载网页 加载URL(网络或者本地assets文件夹【这个文件夹下存放着我们不需要编译的资源文件,例如html等不需要编译成二进制代码】下的html文件) 加载html代码 Native和JavaScript相互调用(混合调用) ⒉使用    加载网络URL webview.loadUrl("https://www.coreqi.cn");   **默认WebView不支持js(JavaScript),需要开启支持 webview.getSettings().setJavaScriptEnabled(boolean flag);   加载assets文件夹下的html文件 webview.loadUrl("file:///android_asset/test.html");   加载html代码 webview.loadData(); //这个方法有时会出现例如乱码等情况 webview.loadDataWithBaseURL();  //这个方法通常在编码设置方面相较好一些   网页的前进后退 webview.canGoBack() //当前页面是否能够后退 webview.goBack() //返回当前页面的上一个页面 (后退) webview.canGoForward() //当前页面是否能够前进 webview.goForward() /

VS/Xamarin Android入门(对话框控件)三

…衆ロ難τιáo~ 提交于 2020-01-07 05:46:00
一、对话框和提示信息   一、对话框       我们首先从简单的对话框开始。        1、普通对话框       在android里面,对话框用的是 AlertDialog ,这个呢,其实就和winform里面的MessageBox一样的。最简单的 AlertDialog.Builder ad_build = new AlertDialog.Builder( this ) .SetTitle(Resource.String.warming) //标题(警告) .SetMessage(Resource.String.info) //获取本地string.xml定义的数据 .SetNegativeButton( "确定" , this ) .SetPositiveButton( "取消" , this ) .SetNeutralButton( "中间按钮" , this ) .SetIcon(Android.Resource.Drawable.StatSysWarning); ad_build.Show();       其中,SetNeutralButton这里是设置的一个中间按钮,这个东西,可以有,也可以没有,代码可以直接添加到程序里面运行即可。在代码中,我们可以看到提示信息里面的, 获取本地strings.xml定义的数据。我们可以看下本地的xml数据。 <?xml

Android 硬件加速(Hardware acceleration)

一世执手 提交于 2020-01-04 02:19:41
原文出处: http://www.ccbu.cc/android/android-hardware-acceleration 硬件加速 Android 3.0 (API level 11), 开始支持 所有的View 的canvas都会使用GPU,但是硬件的加速会占有一定的RAM。 在API >= 14上,默认是开启的,如果你的应用只是标准的View和Drawable,全局都打开硬件加速,是不会有任何问题的。 然而,硬件加速并不支持所有的2D画图的操作,这时开着它,可能会影响到你的自定义控件或者绘画,出现异常等行为, 所以android对于硬件加速提供了可选性 如果你的应用执行了自定义的绘画,可以通过在真机上测试开启硬件加速查找问题 硬件加速的级别 Application < application android: hardwareAccelerated = " false " ... > </ application > Activity < application android: hardwareAccelerated = " true " > < activity ... /> < activity android: hardwareAccelerated = " false " /> </ application > Window getWindow ( ) .

架构 MVC MVP MVVM 简介 MD

北城以北 提交于 2020-01-04 00:19:17
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录 MVC 架构 MVC各层的作用 Android中的实际情况 演示案例 BaseModel Callback SampleModel SampleActivity 案例总结 MVP 架构 基本概念 特点 MVP各层的作用 用MVP架构编写登录模块完整版 定义Presenter接口(可选) 定义Model接口(可选)及MP回调接口(必选) 定义View接口(必选) 定义Presenter的实现类 定义Model的实现类 让Activity实现View接口 用MVP架构编写登录模块简洁版 View层接口 Activity Presenter Model MVVM 架构 如何选择 MVC 架构 MVC各层的作用 M层:Model,SQL、XML、JSON,数据模型。负责与数据处理相关的业务逻辑的处理,比如数据库读写操作,网络请求操作,复杂的算法,耗时的任务等。Model是一个应用系统的核心部分,代表了该系统实际要实现的所有功能。当M层完成数据处理后,会通知Controller更新View。 V层:View,XML布局、自定义View,Java编写的View

自定义android RadioButton View,添加较为灵活的布局处理方式

ε祈祈猫儿з 提交于 2020-01-03 13:48:09
android的RadioButton的使用历来都让人比较头疼,如在布局方面,图案、文字无法分别设置padding等,另外,低版本的android RadioGroup不支持换行排列的RadioButton(此bug在4.4以上貌似已经修复) 这里我自定义了一个VariedRadioButton,主要的功能优势有: 1.可以一步添加多个radio button,不需要在xml布局文件中进行多次罗列; 2.灵活布局:添加text、image的margin等属性,可以自由定义间隔; 3.灵活布局:自由定义image/text的前后顺序 4.灵活布局:自由设定radio button的orientation,支持横向和纵向 5.无需添加响应radio button的oncheckedchanged接口。在需要取值时,直接调用一行代码即可。 效果如下: 代码如下: 主界面: 1 package cn.carbs.variedradiobutton; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.Button; 7 import cn.carbs.variedradiobutton.view

Android 自定义View及其在布局文件中的使用示例(二)

為{幸葍}努か 提交于 2020-01-03 13:45:56
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3530213.html From crash_coder linguowu linguowu0622@gamil.com 前言:上一篇中( Android 自定义View及其在布局文件中的使用示例 )介绍了Android开发中,当系统提供的控件不满足开发者需求的时候,演示如何自定义View,本文将作为上篇的延续,先大体上介绍Android是如何画出界面的,属于前提理论基础,下一篇将重点介绍Android画界面过程中的几个重要方法,如: 1,onMeasure() 2,onLayout() 3,onDraw() Android绘图的理论基础: 1,我们创建一个Activity来测试上一篇中自定义的View: a) CustomViewActivity.java 1 public class CustomViewActivity extends Activity{ 2 3   @Override 4   protected void onCreate(Bundle savedInstanceState) { 5     // TODO Auto-generated method stub 6     super.onCreate(savedInstanceState); 7    

Android所有动画分类总结

徘徊边缘 提交于 2020-01-03 09:06:32
Android常用动画调研 视图动画(View Animation) 视图动画: 也叫Tween(补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。譬如,如果你有一个TextView对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。补间动画通过XML或Android代码定义,建议使用XML文件定义,因为它更具可读性、可重用性。 作用对象: 作用于视图对象View,如TextView,不可作用于属性,如点击响应位置等。 核心类: 透明度动画(AlphaAnimation)、缩放动画(ScaleAnimation)、平移动画(TranslateAnimation)、旋转动画(RotateAnimation)。 常用使用场景: 1、比如应用于ViewGroup的子元素,常用的ViewGroup,比如ListView的每个子元素出现时多有一个特定的动画;2、应用于Activity的切换,Activity切换过程中,系统有默认的动画,但是很普通,如果我们想自己定义,可以使用 overridePendingTransition(int enterAnim, int exitAnim)来指定动画。3、应用于Fragment的切换Fragmnet同样也可以添加动画切换,这个应该相对比较少用到