当前位置:网站首页>Functions and usage of viewswitch
Functions and usage of viewswitch
2022-07-07 17:36:00 【XLMN】
ViewSwitcher The function and usage of
Represents the view switching component , Multiple view Stack up , Show only one component at a time , When control from one view Switch to another view when , You can specify animation effects ,
To give viewswitcher Add multiple components , Use viewswitcher Of setfactory Method setting viewfactory, And by the viewfactory establish view
public class MainActivity extends Activity {
// Define a constant , Number of applications per screen
public static final int NUMBER_PER_SCREEN = 12;
// Internal classes representing the application
public static class DataItem {
// Application name
public String dataName;
// App icons
public Drawable drawble;
}
// Save the list aggregate
private ArrayList<DataItem> items = new ArrayList<MainActivity.DataItem>();
// Record which screen is currently being displayed ,
private int sceeNo = -1;
// Total number of screens saved
private int screenCount;
ViewSwitcher vs;
// establish Layoutinflater object
LayoutInflater inflater;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.viewswitcher);
inflater = LayoutInflater.from(MainActivity.this);
// Create a containing 40 An element of liset aggregate , Used to simulate inclusion 40 Applications
for (int i = 0; i < 40; i++) {
String label = "" + i;
Drawable dr = getResources().getDrawable(R.drawable.mia5);
DataItem dt = new DataItem();
dt.dataName = label;
dt.drawble = dr;
items.add(dt);
}
// Calculate the total number of screens the application occupies
// The energy of the computing application can be divided NUMBER_PER_SCREEN;
// If it's not divisible , The total number of screens should be the result of division plus 1;
screenCount=items.size()%NUMBER_PER_SCREEN == 0?
items.size()/NUMBER_PER_SCREEN:
items.size()/NUMBER_PER_SCREEN +1;
vs=(ViewSwitcher) findViewById(R.id.viewswitcher);
vs.setFactory(new ViewFactory() {
// Return to one GridView Components
@Override
public View makeView() {
// TODO Auto-generated method stub
// Load components , The actual is GridView Components
return inflater.inflate(R.layout.slidelistview, null);
}
});
// The first screen is displayed when the page is loaded
next(null);
}
public void next(View view) {
// TODO Auto-generated method stub
if (sceeNo < screenCount - 1) {
sceeNo++;
// by ViewSwitcher Animate the component display process
vs.setInAnimation(this, R.anim.slide_in_right);
// by ViewSwitcher Animate the process of component hiding
vs.setInAnimation(this, R.anim.slide_out_left);
// Control what will be displayed on the next screen GridView Corresponding adapter
((GridView) vs.getNextView()).setAdapter(ba);
// Click the button on the right , Show next screen
// After learning gesture detection , You can also use gestures to display the next screen
vs.showNext();
}
}
public void prev(View v) {
// TODO Auto-generated method stub
if (sceeNo > 0) {
sceeNo--;
// by viewswitcher Animate the component display process
vs.setInAnimation(this, android.R.anim.slide_in_left);
// by viewswitcher Animate the process of component hiding
vs.setInAnimation(this, android.R.anim.slide_in_left);
// Control what will be displayed on the next screen gridview Corresponding adapter
((GridView) vs.getNextView()).setAdapter(ba);
// Click the left button to display the previous screen , You can also use gestures
// After learning gesture detection , You can also realize the previous screen through gesture detection
vs.showPrevious();
}
}
// The baseAdapter Responsible for the display of each screen GridView Provide list items
private BaseAdapter ba = new BaseAdapter() {
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
// TODO Auto-generated method stub
View view = arg1;
if (arg1 == null) {
// Load the layout file
view = inflater.inflate(R.layout.labelicon,
null);
}
// Get the layout I see in imageview Components , And set the icon for it
ImageView iv = (ImageView) view
.findViewById(R.id.image01);
iv.setImageDrawable(getItem(arg0).drawble);
// obtain
TextView tv = (TextView) view
.findViewById(R.id.textview);
tv.setText(getItem(arg0).dataName);
return view;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
//
return arg0;
}
@Override
public DataItem getItem(int arg0) {
// TODO Auto-generated method stub
// according to screenno Computation first argo List item data
return items.get(sceeNo * NUMBER_PER_SCREEN + arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
// If you have reached the last screen , And the number of applications cannot be divided number——per_screen
if (sceeNo == screenCount - 1
&& items.size() % NUMBER_PER_SCREEN != 0) {
// The number of programs displayed on the last screen is the number of applications number_per_screen Seeking remainder
return items.size() % NUMBER_PER_SCREEN;
}
// Otherwise, the number of programs displayed on each screen is number_per_screen
return NUMBER_PER_SCREEN;
}
};
}
<?xml version="1.0" encoding="utf-8"?><!-- Define a Viewswitcher -->
<ViewSwitcher
android:id="@+id/viewswitcher"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ViewSwitcher>
<!-- Define buttons to scroll to the previous screen -->
<Button
android:id="@+id/but01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:onClick="prev"
android:text="&1t" />
<Button
android:id="@+id/but02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:onClick="next"
android:text="&gt" />
<?xml version="1.0" encoding="utf-8"?> <ImageView
android:id="@+id/image01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" />
<?xml version="1.0" encoding="utf-8"?> <!-- Animate drag in from right ,duration Specify the duration of the animation -->
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
<?xml version="1.0" encoding="utf-8"?> <!-- Animate the drag in from the left ,duration Specify the duration of the animation -->
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="-100%p"
android:toXDelta="0" />
<?xml version="1.0" encoding="utf-8"?> 
边栏推荐
- 百度地图自定义样式向右拖拽导致全球地图经度0度无法正常显示
- Solidity函数学习
- L1-019 谁先倒(Lua)
- notification是显示在手机状态栏的通知
- 从DevOps到MLOps:IT工具怎样向AI工具进化?
- Jenkins发布uniapp开发的H5遇到的问题
- 麒麟信安携异构融合云金融信创解决方案亮相第十五届湖南地区金融科技交流会
- 电脑无法加域,ping域名显示为公网IP,这是什么问题?怎么解决?
- How to choose the appropriate automated testing tools?
- 99% of users often make mistakes in power Bi cloud reports
猜你喜欢

【TPM2.0原理及应用指南】 12、13、14章

Matplotlib绘制三维图形

【可信计算】第十三次课:TPM扩展授权与密钥管理

麒麟信安加入宁夏商用密码协会

企业即时通讯软件是什么?它有哪些优势呢?

【重新理解通信模型】Reactor 模式在 Redis 和 Kafka 中的应用

【网络攻防原理与技术】第6章:特洛伊木马

Sator launched Web3 game "satorspace" and launched hoobi
![[Seaborn] combination chart: facetgrid, jointgrid, pairgrid](/img/89/a7cf40fb3a7622cb78ea1b92ffd2fb.png)
[Seaborn] combination chart: facetgrid, jointgrid, pairgrid

A tour of grpc:03 - proto serialization / deserialization
随机推荐
LeetCode 497(C#)
第2章搭建CRM项目开发环境(搭建开发环境)
notification是显示在手机状态栏的通知
麒麟信安操作系统衍生产品解决方案 | 存储多路径管理系统,有效提高数据传输可靠性
自定义View必备知识,Android研发岗必问30+道高级面试题
Devops' operational and commercial benefits Guide
actionBar 导航栏学习
第3章业务功能开发(安全退出)
DatePickerDialog和trimepickerDialog
99% of users often make mistakes in power Bi cloud reports
SIGGRAPH 2022最佳技术论文奖重磅出炉!北大陈宝权团队获荣誉提名
防火墙系统崩溃、文件丢失的修复方法,材料成本0元
Sator推出Web3游戏“Satorspace” ,并上线Huobi
[video / audio data processing] Shanghai daoning brings you elecard download, trial and tutorial
LeetCode刷题day49
Notes on installing MySQL in centos7
使用Stace排除故障的5种简单方法
第二十四届中国科协湖南组委会调研课题组一行莅临麒麟信安调研考察
【信息安全法律法規】複習篇
Share the latest high-frequency Android interview questions, and take you to explore the Android event distribution mechanism