自定义view

2.1 View与ViewGroup的概念

人走茶凉 提交于 2019-12-20 20:56:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 2.1 View与ViewGroup的概念 分类 Android 基础入门教程 本节引言 告别了第一章,迎来第二章——Android中的UI(User Interface)组件的详解, 而本节我们要学习的是所有控件的父类View和ViewGroup类!突发奇想,直接翻译官方文档对 这两个东西的介绍吧,对了,天朝原因,google上不去,Android developer上不去,我们可以 改hosts或者用vpn代理,当然也可以像笔者一样使用国内的API镜像,这里分享个吧: http://androiddoc.qiniudn.com/guide/topics/ui/overview.html 这个镜像是5.0的API! UI Overview 在Android APP中,所有的用户界面元素都是由View和ViewGroup的对象构成的 。 View是绘制在屏幕上的用户能与之交互的一个对象。而ViewGroup则是一个用于存放其他View(和ViewGroup)对象的布局容器! Android为我们提供了一个View和ViewGroup子类的集合,集合中提供了一些常用的输入控件(比如按钮和文本域)和各种各样的布局模式(比如线性或相对布局) User Interface Layout

【Unity3D技巧】一个简单的Unity-UI框架的实现

自作多情 提交于 2019-12-20 10:23:32
如何使用 请直接导入UnityUIFramework这个UnityPackage,然后进入名为Test的Scene即可开始体验各种特性,Enjoy!你可以通过访问 我的Github 进行查阅和下载。 View,Context和UI的定义 UI是游戏中主要界面和它的子节点上的物体的统称,如装备列表界面中的 装备列表 和 每个装备 通常会被制作成两个Prefab,这两个Prefab被我们称作两个UI,这两个UI会对应两个UIType,在UIType里面会存储有这个UI全局唯一的名字和路径,如下: public class UIType { public string Path { get; private set; } public string Name { get; private set; } public UIType(string path) { Path = path; Name = path.Substring(path.LastIndexOf('/') + 1); } public override string ToString() { return string.Format("path : {0} name : {1}", Path, Name); } } View代指游戏中的主要界面,例如:主界面,装备界面,装备详情界面等等

浅谈Android RecyclerView

感情迁移 提交于 2019-12-19 11:51:30
Android RecyclerView 是Android5.0推出来的,导入support-v7包即可使用。 个人体验来说,RecyclerView绝对是一款功能强大的控件。 首先总结下RecyclerView的特点: 1.支持不同方向,不同排版模式,实现多种展现数据的形式,涵盖了ListView,GridView,瀑布流等数据表现的形式 2.内部实现了回收机制,无需我们考虑View的复用情况 3.取消了onItemClick等点击事件,需要自己手动去写 ------------------------------------------------------------------------------------ 那么让我们通过一些Demo来了解RecyclerView的基本使用 首先,要导入support-v7 包 import android.support.v7.widget.RecyclerView; RecyclerView和ListView的使用一样,都需要有对应的Adapter,列表项布局,数据源 1.先写主Activity布局 可以看到RecyclerView的标签 <android.support.v7.widget.RecyclerView> <LinearLayout xmlns:android="http://schemas.android.com

小程序自定义轮播图

那年仲夏 提交于 2019-12-19 09:34:02
话不多说,上图上代码。 wxml <view style="white-space: nowrap;" class="box" bindtouchstart="touchstart" bindtouchmove="touchmove" bindtouchend="touchend"> <view class="club" animation="{{animation1}}" bindtap="scrollLeft"> <image src="http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg"/> <text>{{clubs[0].name}}</text> </view> <view class="club" animation="{{animation2}}" bindtap="scrollLeft"> <image src="http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg"/> <text>{{clubs[1].name}}</text> </view> <view class="club" animation="{{animation3}}"> <image src="http://img02

【自定义轮播图】微信小程序自定义轮播图无缝滚动

℡╲_俬逩灬. 提交于 2019-12-19 09:33:53
先试试效果,可以通过设置参数调整样式 微信小程序中的轮播图可以直接使用swiper组件,如下: <swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}"> <block wx:for="{{imgUrls}}"> <swiper-item> <image src="{{item}}" class="slide-image" width="355" height="150"/> </swiper-item> </block></swiper> 但是为了实现上图的效果,中间一张图片,然后两遍的图片都能显示出来一点点,并且两张图片中间有空隙,于是开始自定义一个轮播图组件。起名就叫做自定义轮播图吧。 为了方便后期使用,起初设计多个参数可调: 1、自动滚动开关 2、滚动一屏所需要的时间 3、两次滚动事件的时间间隔 4、两张图片中间空隙宽度 5、左右两边新突出图片的宽度 6、开始滚动回调事件 7、滚动结束回调事件 8、数据数组,比如图片数组 #################################################### 开始操作,首先需要在页面上防止wxml代码: <view class=

Android适配器之基于BaseAdapter定义AbslistView万能适配器

蹲街弑〆低调 提交于 2019-12-19 04:23:11
推荐优先本地搜索浏览 Android适配器之DataModifyHelper数据操作类的封装 定义BaseAdapter抽象基类,抽取共性部分,即实现getCount、getItem、getItemId 观察源码可知,在构造函数中实例化DataModifyHelper对象,该对象负责数据的增删改查等操作。适配器中提供getDataModifyHelper方法,供外界获得操作数据的 DataModifyHelper帮助类。 public abstract class AbsUnityBaseAdapter<T> extends BaseAdapter implements INotifyAdapterDataSetChange { private static final UtilsLog lg = UtilsLog.getLogger(AbsUnityBaseAdapter.class); private LayoutInflater layoutInflater; private IAdapterDataModifyHelper<T> IAdapterataModifyHelper; /** * 构造方法 */ protected AbsUnityBaseAdapter() { this.IAdapterataModifyHelper = new DataModifyHelper

Android 自定义View----仪表盘

↘锁芯ラ 提交于 2019-12-19 04:23:07
通过这个view大致了解了几个方法,可通过PathEffect给path设置样式; 大致分三步: 第一步:通过canvas.drawArc()方法先把圆弧画出来 第二步:画刻度(这里通过给画笔设置PathEffect的方法实现刻度绘制,并非for循环画线) 第三步:画指针(这里需要了解正弦余弦,其实都是API的方法,直接调用即可,但需要自己理解) public class DashboardView extends View { // 画笔 Paint mPaint; // 画刻度使用 Path dashPath; // path效果 比DashPathEffect 多一个前缀Path ,可理解为使用一个Path 来绘制 PathDashPathEffect effect; // 圆弧半径 private float mRadius = UnitUtil.dp2px(120); // 未封口的角度 private int remainAngle = 100; // 指针长度 private float pointerLength = UnitUtil.dp2px(90); // 刻度数量 private int scaleCount = 16; // 指针指向的刻度 private int mAngle = 10; public DashboardView(Context

RecyclerView的简单使用

微笑、不失礼 提交于 2019-12-18 14:08:26
在布局文件中声明 在Activity中使用 Adapter的创建 添加单击事件 Item动画 更新数据 1、 在布局文件中声明 <android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent"/> 2、 在Activity中使用 // 1,找到这个ViewmRecyclerView = (RecyclerView)findViewById(R.id.my_recycler_view); // 2,设置布局管理LayoutManager mLayoutManager = new LinearLayoutManager(this); mRecyclerView.setLayoutManager(mLayoutManager); // 3,(可选)如果可以确定每个item的高度是固定的,设置这个选项可以提高性能 mRecyclerView.setHasFixedSize(true); // 4,设置Adapter mRecyclerView.setAdapter(new MyAdapter());

《Android学习指南》目录

天涯浪子 提交于 2019-12-16 21:09:37
源 :《Android学习指南》目录 Android学习指南的内容分类: 分类 描述 0.学习Android必备的Java基础知识 没有Java基础的朋友,请不要先看Android的课程,这样会很累。 1.Android学习指南基础篇 对于有Java基础的朋友,可以通过本分类60讲左右的课程,打下比较坚实的基础。 2.Android学习指南项目实训篇 对于学过“1.Android2.2学习指南基础篇”的朋友,可以通过本分类项目的联系,加深对基础知识的理解和熟练运用。 3.Android学习指南提高篇 讲解Android源代码解析,OpenGL ES编程,NDK编程等专题。 a.Android开发小知识 讲解一些Android开发中的小知识、小技巧,用以开阔视野,拓宽思路,本分类里不少内容含金量还是很高的。 b.Android教学视频 视频的优点是足够直观,缺点是无法搜索和查询。有机会的话我会从头录制一套带讲解的视频。 二、Android学习指南基础篇文章目录 课程 描述 第一讲:Android开发环境的搭建 第二讲:Android系统构架分析和应用程序目录结构分析 第三讲:Android模拟器的使用 emulator 第四讲:Activity入门指南 Activity 第五讲:用户界面 View(一) FrameLayout, LinearLayout 第六讲:用户界面 View

自定义View Demo

杀马特。学长 韩版系。学妹 提交于 2019-12-16 00:21:49
public class VerticalOffsetLayout extends ViewGroup { private static final int OFFSET = 100; private Paint mPaint; public VerticalOffsetLayout(Context context) { super(context); init(context, null, 0); } public VerticalOffsetLayout(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs, 0); } public VerticalOffsetLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr); } private void init(Context context, AttributeSet attrs, int defStyleAttr) { mPaint = new Paint(Color.BLUE); mPaint