自定义View(二)——文字滚动、动态画圆
来源:互联网 发布:剑桥大学研究生 知乎 编辑:程序博客网 时间:2024/04/29 17:34
一、自定义View,使文字横向循环滚动
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cctvjiatao.customview" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>com.cctvjiatao.customview.MainActivity
package com.cctvjiatao.customview;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > <com.cctvjiatao.customview.v1.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:visibility="gone"> </com.cctvjiatao.customview.v1.CustomView1> <com.cctvjiatao.customview.v2.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"> </com.cctvjiatao.customview.v2.CustomView1> <com.cctvjiatao.customview.v2.CustomView2 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"> </com.cctvjiatao.customview.v2.CustomView2> <com.cctvjiatao.customview.v2.CustomView3 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"> </com.cctvjiatao.customview.v2.CustomView3> <com.cctvjiatao.customview.v3.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent"> </com.cctvjiatao.customview.v3.CustomView1></FrameLayout>com.cctvjiatao.customview.v3.CustomView1
package com.cctvjiatao.customview.v3;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;/** * @作者: jiatao * @修改时间:2016-3-12 下午4:20:42 * @包名:com.cctvjiatao.customview.v3 * @文件名:CustomView1.java * @版权声明:www.cctvjiatao.com * @功能: 自定义View,使文字横向循环滚动 */public class CustomView1 extends View {private float move_x = 0;private Paint paint = new Paint();private MoveThread moveThread;public CustomView1(Context context, AttributeSet attrs) {super(context, attrs);}public CustomView1(Context context) {super(context);}@Overrideprotected void onDraw(Canvas canvas) {paint.setTextSize(30);canvas.drawText("cctvjiatao", move_x, 30, paint);if (moveThread == null) {moveThread = new MoveThread();moveThread.start();}}class MoveThread extends Thread {@Overridepublic void run() {while (true) {move_x += 3;if (move_x > getWidth()) {//如果文字滑出屏幕move_x = 0 - paint.measureText("cctvjiatao");//move_x = 0;//对比效果差异//move_x = paint.measureText("cctvjiatao");//对比效果差异}postInvalidate();//更新Viewtry {Thread.sleep(30);} catch (InterruptedException e) {e.printStackTrace();}}}}}
二、自定义View,循环画圆
AndroidManifest.xml 同一
com.cctvjiatao.customview.MainActivity 同一
activity_main.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" > <com.cctvjiatao.customview.v1.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:visibility="gone" > </com.cctvjiatao.customview.v1.CustomView1> <com.cctvjiatao.customview.v2.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" > </com.cctvjiatao.customview.v2.CustomView1> <com.cctvjiatao.customview.v2.CustomView2 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" > </com.cctvjiatao.customview.v2.CustomView2> <com.cctvjiatao.customview.v2.CustomView3 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" > </com.cctvjiatao.customview.v2.CustomView3> <com.cctvjiatao.customview.v3.CustomView1 android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" > </com.cctvjiatao.customview.v3.CustomView1> <com.cctvjiatao.customview.v3.CustomView2 android:layout_width="match_parent" android:layout_height="match_parent"> </com.cctvjiatao.customview.v3.CustomView2></FrameLayout>com.cctvjiatao.customview.v3.CustomView2
package com.cctvjiatao.customview.v3;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.View;/** * @作者: jiatao * @修改时间:2016-3-12 下午4:42:36 * @包名:com.cctvjiatao.customview.v3 * @文件名:CustomView2.java * @版权声明:www.cctvjiatao.com * @功能: 自定义View,循环画圆,圆的形状有 RectF决定 */public class CustomView2 extends View {private ArcThread arcThread;private float sweepAngle = 0;private RectF rectf1 = new RectF(0 ,60 ,100, 160);private RectF rectf2 = new RectF(150 ,60 ,250, 130);private RectF rectf3 = new RectF(350 ,60 ,450, 200);public CustomView2(Context context) {super(context);}public CustomView2(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onDraw(Canvas canvas) {Paint paint1 = new Paint();paint1.setColor(0xff00ff00);Paint paint2 = new Paint();paint2.setColor(0xffff0000);Paint paint3 = new Paint();paint3.setColor(0xff0000ff);/** * canvas.drawArc(oval, startAngle, sweepAngle, useCenter, paint) * oval :指定圆弧的外轮廓矩形区域 * startAngle: 圆弧起始角度,单位为度 * sweepAngle: 圆弧扫过的角度,顺时针方向,单位为度 * useCenter: 如果为True时,在绘制圆弧时将圆心包括在内,通常用来绘制扇形 * paint: 绘制圆弧的画板属性,如颜色,是否填充等 * */ canvas.drawArc(rectf1, 0, sweepAngle, true, paint1); canvas.drawArc(rectf2, 0, sweepAngle, true, paint2); canvas.drawArc(rectf3, 0, sweepAngle, true, paint3); if(arcThread == null){ arcThread = new ArcThread(); arcThread.start(); }}class ArcThread extends Thread{@Overridepublic void run() { while(true){ sweepAngle ++; if(sweepAngle > 360){ sweepAngle = 0; } postInvalidate(); try { Thread.sleep(30); } catch (InterruptedException e) { e.printStackTrace(); } }}}}效果图:
0 0
- 自定义View(二)——文字滚动、动态画圆
- 自定义View(三)——封装自定义View,通过封装类实现文字滚动、画圆
- 自定义View之文字游乐场(二)
- 自定义View实现文字跑马灯效果(垂直滚动和水平滚动)
- Android自定义view——滚动选择器
- 自定义view-----滚动的刻度尺(二)
- Android自定义view之一直滚动的文字
- android 自定义view——自定义属性(二)
- 自定义view(二)
- 自定义view(二)
- 自定义View(二)
- 自定义View(二)
- 自定义View(二)
- 自定义View (二)
- 自定义View(二)
- Android自定义view——动态画圆形
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- Android绘图机制(二)——自定义View绘制形, 圆形, 三角形, 扇形, 椭圆, 曲线,文字和图片的坐标讲解
- Bluemix结合DevOps Service实现一键部署
- android学习笔记——AsyncTask异步消息处理机制简单介绍及使用
- span文字太长显示不下显示...
- 我爱学Java之Map操作详解
- java二分法查找两种实现方法
- 自定义View(二)——文字滚动、动态画圆
- STM32:STM32学习记录1:MDK基本数据类型及代码优化
- CodeForces 630 R. Game【博弈】
- 配置JDK
- android学习笔记——Service服务初探
- git命令总结2
- 这里记载所有的工具
- 关于/dev/null及用途
- 软件测试的自我修养之测试用例设计