基於ViewFlipper實現的自定義新手指引控制元件.
第一步:新建Android工程ViewFlipperDemo:
第二步:新建AdverView.java程式碼如下:
- package com.tutor.viewflipper;
- import android.content.Context;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.util.AttributeSet;
- import android.view.Gravity;
-
import android.view.MotionEvent;
- import android.view.animation.Animation;
- import android.view.animation.TranslateAnimation;
- import android.widget.FrameLayout;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import android.widget.ViewFlipper;
- /**
- * @author frankiewei.
- * 廣告推薦外掛,可以自定義img個數.
- */
-
public
- /**
- * 當前索引值.預設第一張圖片被選中.
- */
- privateint mCurrentIndex = 0;
- /**
- * 上下文.
- */
- private Context mContext;
- /**
- * 點選螢幕的X左邊值.
- */
- privatefloat startX;
- /**
- * 裝置的寬度.
- */
- privateint mDisplayWidth;
-
/**
- * 從左到右進入的動畫.
- */
- private Animation mLeft2RightInAnimation;
- /**
- * 從左到右出去動畫.
- */
- private Animation mLeft2RightOutAnimation;
- /**
- * 從右到左進入動畫.
- */
- private Animation mRight2LeftInAnimation;
- /**
- * 從右到左出去動畫.
- */
- private Animation mRight2LeftOutAnimation;
- /**
- * 動畫播放時間.
- */
- privatelong duration = 1000;
- /**
- * ViewFlipper控制元件,繼承FrameLayout,圖片的容器.
- */
- private ViewFlipper mViewFlipper;
- /**
- * 下面動態生成點點tip的容器.
- */
- private LinearLayout mTipLinearLayout;
- /**
- * 正常點點的Bitmap.
- */
- private Bitmap mPointNorBitmap;
- /**
- * 被選中的點點的Bitmap.
- */
- private Bitmap mPointSelBitmap;
- /**
- * 這裡是要顯示的廣告圖片的資源ID,可以自定義個數.
- */
- privateint[] imgResIds = {R.drawable.test1,R.drawable.test2,R.drawable.test3,
- R.drawable.test4,R.drawable.test5};
- public AdvserView(Context context) {
- super(context);
- setupViews();
- }
- public AdvserView(Context context,AttributeSet attr) {
- super(context,attr);
- setupViews();
- }
- privatevoid setupViews(){
- mContext = getContext();
- mDisplayWidth = getResources().getDisplayMetrics().widthPixels;
- mViewFlipper = new ViewFlipper(mContext);
- mTipLinearLayout = new LinearLayout(mContext);
- mPointNorBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.point_normal);
- mPointSelBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.point_selected);
- //將廣告圖片加入ViewFlipper.
- for(int i = 0; i < imgResIds.length; i++){
- ImageView imageView = new ImageView(mContext);
- imageView.setImageResource(imgResIds[i]);
- mViewFlipper.addView(imageView);
- }
- //將點點動態加入Linerlayout.
- for(int j = 0; j < imgResIds.length; j++){
- ImageView imageview = new ImageView(mContext);
- if(j == 0){
- imageview.setImageBitmap(mPointSelBitmap);
- }else{
- imageview.setImageBitmap(mPointNorBitmap);
- }
- mTipLinearLayout.addView(imageview);
- }
- addView(mViewFlipper);
- addView(mTipLinearLayout);
- mTipLinearLayout.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL);
- //初始化動畫.
- mLeft2RightInAnimation = new TranslateAnimation(-mDisplayWidth, 0, 0, 0);
- mLeft2RightInAnimation.setDuration(duration);
- mLeft2RightOutAnimation = new TranslateAnimation(0, mDisplayWidth, 0, 0);
- mLeft2RightOutAnimation.setDuration(duration);
- mRight2LeftInAnimation = new TranslateAnimation(mDisplayWidth, 0, 0, 0);
- mRight2LeftInAnimation.setDuration(duration);
- mRight2LeftOutAnimation = new TranslateAnimation(0, -mDisplayWidth, 0, 0);
- mRight2LeftOutAnimation.setDuration(duration);
- }
- @Override
- publicboolean onTouchEvent(MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- startX = event.getX();
- break;
- case MotionEvent.ACTION_UP:
- ImageView lastSelImageView = (ImageView)mTipLinearLayout.getChildAt(mCurrentIndex);
- //判斷左右滑動切換圖片.
- if(event.getX() > startX){
- mViewFlipper.setInAnimation(mLeft2RightInAnimation);
- mViewFlipper.setOutAnimation(mLeft2RightOutAnimation);
- mViewFlipper.showNext();
- mCurrentIndex++;
- if(mCurrentIndex > imgResIds.length -1){
- mCurrentIndex = 0;
- }
- }elseif(event.getX() < startX){
- mViewFlipper.setInAnimation(mRight2LeftInAnimation);
- mViewFlipper.setOutAnimation(mRight2LeftOutAnimation);
- mViewFlipper.showPrevious();
- mCurrentIndex--;
- if(mCurrentIndex < 0){
- mCurrentIndex = imgResIds.length -1;
- }
- }
- ImageView imageview = (ImageView)mTipLinearLayout.getChildAt(mCurrentIndex);
- imageview.setImageBitmap(mPointSelBitmap);
- lastSelImageView.setImageBitmap(mPointNorBitmap);
- break;
- default:
- break;
- }
-
相關推薦
基於ViewFlipper實現的自定義新手指引控制元件.
第一步:新建Android工程ViewFlipperDemo: 第二步:新建AdverView.java程式碼如下: package com.tutor.viewflipper; import android.content.Context; imp
【UE4】 第07講 實現自定義的行走控制元件
在圖形業,只有技術是不行的,你要明白我們從事的工作,我們可是在作詩,我們是詩人 - Nvidia創始人黃仁勳(圖形皇帝) (版權宣告,禁止轉載) U
自定義上傳控制元件實現
FileReader 物件 存檔 方便以後拿來即用 可以整合 canvas圖片裁剪進行實現 <input type="file" value="提交" id="file"> <button id="btn">上傳圖片並預覽</button>
android自定義星級評分控制元件,可實現只顯示實心星星
話不多說,上圖 近日app需求弄一個等級展示,看了下UI圖,只顯示實星(點亮的星星).如圖 但是網上關於星級評分的例子大多這樣 也展示虛心星星 通過自定義View package com.starsbar; import android.content.C
Android實現自定義相機系列(1)—自定義view裁剪控制元件
目標 本系列文章主要記錄自定義相機拍照系列,專案原始碼還在編寫中,後續會傳到github,內容包括: 1、使用Android的Camera API自定義拍照模式,例如人臉拍照,OCR拍照等; 2、對拍完的照片進行裁剪; 3、自定義圖片伸縮view,使用手勢對圖
基於ckeditor實現自定義表單
最近公司的一個系統需要自定義表單,根據以往使用ckeditor的經驗突發奇想,用ckeditor編寫外掛的方式實現了一個自定義表單系統。下面簡單介紹一下表單設計器的設計思路。 表單設計器原理 表單智慧設計器的設計思想是基於ckeditor富文字編輯器,開發HTML表單中需要
Android實現自定義鎖屏控制
當在Android手機上需要實現自定義的鎖屏, 往往在進入自定義的鎖屏介面介面之前需要先解開螢幕鎖, 以順利的進入自定義鎖屏介面 ,並能方便使用者即時的做其他操作,下面用程式碼來實現這一功能: 1、點亮螢幕與解系統鎖 //light the screen Pow
基於 WebRTC 實現自定義編碼解析度傳送
2020年如果問什麼技術領域最火?毫無疑問:**音視訊**。2020年遠端辦公和線上教育的強勢發展,都離不開音視訊的身影,視訊會議、線上教學、娛樂直播等都是音視訊的典型應用場景。 更加豐富的使用場景更需要我們考慮**如何提供更多的可配置能力項,**比如解析度、幀率、位元速率等**,以實現更好的使用者體驗**
自定義Switch開關控制元件
自定義Switch開關控制元件 *做安卓也有一年多了*,一直想去學習**自定義控制元件**這一塊(其實是自己懶–!),最近閒下來看了很多關於自定義控制元件方面的東西,雖然不是很熟練,但是基本上能去弄清楚它的實現方式有哪些。。也自己試著去模仿別人的程式碼做了一些自定義的控制元件,其中就有
《第一行程式碼Android》學習總結第三章 自定義佈局與控制元件
1、View是Android中最基本的元件,它可以在螢幕上繪製一塊矩形區域,並在這塊區域內響應各種事件。所有控制元件都直接或間接繼承自View。 2、ViewGroup是一種特殊的View,可以包含很多子View和子ViewGroup,是一個用於放置控制元件和佈局的容器。所有佈局都直接或間
自定義加減控制元件
public class MyAddSubView extends LinearLayout implements View.OnClickListener { private int number = 1; private TextView tv_sub; pri
Android自定義標籤列表控制元件LabelsView
無論是在移動端的App,還是在前端的網頁,我們經常會看到下面這種標籤的列表效果: 標籤從左到右擺放,一行顯示不下時自動換行。這樣的效果用Android源生的控制元件很不好實現,所以往往需要我們自己去自定義控制元件。我在開發中就遇到過幾次要實現這樣的標籤列表效果,所以就自己寫了個控制元件,放到我的
Bugly 版本升級UI自定義之固定控制元件id
1. Beta.upgradeDialogLayoutId = R.layout.layout_upgrade_dialog; 2.佈局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:androi
QT自定義碰撞效果控制元件
import QtQuick 2.6 import QtGraphicalEffects 1.0 /* * 作者: yubo * 功能: CollideAuto * 描述: 提供一個公共呼叫碰撞動畫控制元件 * 日期: 2018-08-09 &nb
pyqt4 自定義圓形指示燈控制元件
# -*- coding: utf-8 -*-# #------------------------------------------------------------------------------- # Name: 自定義圓形指示燈
學習自定義 —— 自定義線型圖控制元件
自定義控制元件篇: 自定義折線圖 前言:自定義控制元件永遠都是客戶端開發的一個必須攻破的難題 首先得了解需要實現的樣式,確定有沒有可繼承的控制元件類,若沒有就
細說 Angular 的自定義表單控制元件 (贊,實用)
我們在構建企業級應用時,通常會遇到各種各樣的定製化功能,因為每個企業都有自己獨特的流程、思維方式和行為習慣。有很多時候,軟體企業是不太理解這種情況,習慣性的會給出一個診斷,『你這麼做不對,按邏輯應該這樣這樣』。但企業往往不會接受這種說法,習慣的力量是強大的,我們一定要尊重
Android-自定義星星評分控制元件RatingBar
星級評分條RatingBar類似於SeekBar、ProgressBar'等等都可以自定義樣式 它的主要用途就比如淘寶、景點 滿意度等 這裡給出兩種自定義效果 如圖所示 第一種是通過RatingBar獲得分數 第二個是通過RatingBar動態調節控制元件屬性(透明度) 由
自定義一個分段控制元件(仿QQ頂部的分段控制元件)
在Android當中並沒有分段控制元件,怎樣去實現一個這樣的分段控制元件,那就要自己去自定義了; 先看一張效果圖: 整體的思路: 1. 設定分段控制元件背景資源 2. 自定義segmentView繼承LinearLayout 3. 設定分段控制元件的屬性(文字的顏色、文
【轉】WPF自定義控制元件與樣式(8)-ComboBox與自定義多選控制元件MultComboBox
一.前言 申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。 本文主要內容: 下拉選擇控制元件ComboBox的自定義樣式及擴充套件; 自定義多選控制元件MultiComboBox; 二.下拉選擇控制元件ComboBox的自