Android 사용자 정의 컨트롤 ViewFipper 수직 주마등 효과 구현
6878 단어 AndroidViewFipper주마등
더 이상 말 하지 않 고 코드 를 직접 올 립 니 다.
사용자 정의 컨트롤 을 정의 합 니 다. 리 니 어 레이아웃 계승
package com.example.viewfipperdemo;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ViewFlipper;
/**
* Created by zmybi on 2017/1/19.
*/
public class MarqueeTextView extends LinearLayout {
private Context mContext;
private String[] strs;
private View mView;
private OnTextClickListener mOnTextClickListener;
private ViewFlipper mViewFlipper;
public MarqueeTextView(Context context) {
this(context,null);
this.mContext = context;
}
public MarqueeTextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
initBasicView();
}
/**
* , ViewFipper
* @param str
* @param onTextClickListener
*/
public void setData(String[] str,OnTextClickListener onTextClickListener) {
this.strs = str;
this.mOnTextClickListener = onTextClickListener;
initViewFipper();
}
private void initBasicView() {
mView = LayoutInflater.from(mContext).inflate(R.layout.layout_viewfipper,null);
mViewFlipper = (ViewFlipper) mView.findViewById(R.id.viewflipper);
mViewFlipper.setInAnimation(mContext,R.anim.in); //
mViewFlipper.setOutAnimation(mContext,R.anim.out); //
LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
addView(mView,params);
mViewFlipper.startFlipping();
}
/**
*
*/
public void clearViewFlipper() {
if(mView != null) {
if(mViewFlipper != null) {
mViewFlipper.stopFlipping();
mViewFlipper.removeAllViews();
mViewFlipper =null;
}
mView = null;
}
}
/**
* viewFipper
*/
private void initViewFipper() {
if(strs.length == 0) {
return;
}
int i = 0;
mViewFlipper.removeAllViews();
while (i < strs.length) { // 3
final TextView tv = new TextView(mContext);
tv.setText(strs[i]);
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if(mOnTextClickListener != null) {
mOnTextClickListener.onClick(tv);
}
}
});
mViewFlipper.addView(tv);
i++;
}
}
}
viewFlipper 에 애니메이션 쓰기 설정:in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="50%p"
android:toYDelta="0" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromYDelta="0"
android:toYDelta="-50%p" />
<alpha
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
layoutviewflipper 레이아웃 의 쓰기:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ViewFlipper
android:padding="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/viewflipper"
android:background="#33ff0000"
android:flipInterval="2000"
></ViewFlipper>
</LinearLayout>
그 중 flipInterval 전환 시간 을 정 하 는 거 예요.MainActivity 의 코드 를 다시 보 겠 습 니 다.
package com.example.viewfipperdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
/**
* TextView
*/
private MarqueeTextView mMarqueeTextView;
private String[] str = {" 1"," 2"," 3"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mMarqueeTextView = (MarqueeTextView) findViewById(R.id.marqueetextview);
mMarqueeTextView.setData(str, new OnTextClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this,((TextView)view).getText(),Toast.LENGTH_LONG).show();
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
mMarqueeTextView.clearViewFlipper();
}
}
참,인터페이스 도 정 의 했 어 요.
package com.example.viewfipperdemo;
import android.view.View;
/**
* Created by zmybi on 2017/1/19.
*/
public interface OnTextClickListener {
void onClick(View view);
}
이로써 위 와 같은 수직 주마등 이 완성 됐다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.