Here are the examples of the java api com.yongzheng.com.richwebproject.web.RichWebView taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
3 Examples
15
Source : RichUrlActivity.java
with Apache License 2.0
from 756718646
with Apache License 2.0
from 756718646
/**
* Created by yongzheng on 2018/8/24.
* 显示url
*/
public clreplaced RichUrlActivity extends AppCompatActivity {
private RichWebView webView;
private RecyclerView recyclerView;
// 滚动控件父容器
private HeaderViewPager scrollableLayout;
// 进度条
private CoolIndicator indicator;
private List<String> datas = new ArrayList<>();
private ListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rich_url);
initView();
}
private void initView() {
webView = findViewById(R.id.web_view);
recyclerView = findViewById(R.id.recycler_view);
scrollableLayout = findViewById(R.id.scrollableLayout);
indicator = findViewById(R.id.indicator);
for (int i = 0; i < 30; i++) {
datas.add("");
}
webView.loadUrl("https://github.com/756718646/RichWebList");
adapter = new ListAdapter(datas);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
// 滚动绑定
scrollableLayout.setCurrentScrollableContainer(new HeaderScrollHelper.ScrollableContainer() {
@Override
public View getScrollableView() {
return recyclerView;
}
});
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
indicator.start();
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
indicator.complete();
}
});
}
clreplaced ListAdapter extends BaseAdapter<String> {
public ListAdapter(List<String> data) {
super(R.layout.default_item, data);
}
@Override
protected void convert(BaseHolder helper, String item) {
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (webView != null) {
webView.setWebChromeClient(null);
webView.setWebViewClient(null);
webView.getSettings().setJavaScriptEnabled(false);
webView.clearCache(true);
webView.removeAllViews();
webView.destroy();
webView = null;
}
}
}
14
Source : RichDataActivity.java
with Apache License 2.0
from 756718646
with Apache License 2.0
from 756718646
/**
* Created by yongzheng on 2018/8/24.
* 显示html标签内容
*/
public clreplaced RichDataActivity extends AppCompatActivity {
private RichWebView webView;
private RecyclerView recyclerView;
// 滚动控件父容器
private HeaderViewPager scrollableLayout;
// 进度条
private CoolIndicator indicator;
private List<String> datas = new ArrayList<>();
private ListAdapter adapter;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rich_data);
this.context = this;
initView();
}
private void initView() {
webView = findViewById(R.id.web_view);
recyclerView = findViewById(R.id.recycler_view);
scrollableLayout = findViewById(R.id.scrollableLayout);
indicator = findViewById(R.id.indicator);
for (int i = 0; i < 30; i++) {
datas.add("");
}
// 设置点击图片
webView.addJavascriptInterface(new JavaScriptLog(this, new JavaScriptLog.ClickImageCallBack() {
@Override
public void clickImage(String src) {
Toast.makeText(context, "点击:" + src, Toast.LENGTH_SHORT).show();
}
}), "control");
// 设置html内容
webView.setShow(getHtmlData());
// 设置图片加载失败回调
webView.setLoadImgError();
// 添加点击图片脚本事件
webView.setImageClickListener();
adapter = new ListAdapter(datas);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
// 滚动绑定
scrollableLayout.setCurrentScrollableContainer(new HeaderScrollHelper.ScrollableContainer() {
@Override
public View getScrollableView() {
return recyclerView;
}
});
}
clreplaced ListAdapter extends BaseAdapter<String> {
public ListAdapter(List<String> data) {
super(R.layout.default_item, data);
}
@Override
protected void convert(BaseHolder helper, String item) {
helper.setText(R.id.text, "我是item " + helper.getAdapterPosition());
}
}
private String getHtmlData() {
StringBuffer sb = new StringBuffer();
try {
InputStream is = getreplacedets().open("data.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String temp = "";
while ((temp = br.readLine()) != null) {
sb.append(temp);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (webView != null) {
webView.setWebChromeClient(null);
webView.setWebViewClient(null);
webView.getSettings().setJavaScriptEnabled(false);
webView.clearCache(true);
webView.removeAllViews();
webView.destroy();
webView = null;
}
}
}
12
Source : EmptyListActivity.java
with Apache License 2.0
from 756718646
with Apache License 2.0
from 756718646
/**
* 空列表头部限制情况,主要使用setTopOffset 限制滑动范围
* 说明:流程 1,估算列表高度,2,setTopOffset 设置头部滑动的范围
*/
public clreplaced EmptyListActivity extends AppCompatActivity {
private RichWebView webView;
private RecyclerView recyclerView;
// 滚动控件父容器
private HeaderViewPager scrollableLayout;
// 进度条
private CoolIndicator indicator;
private List<String> datas = new ArrayList<>();
private ListAdapter adapter;
private Context context;
// 屏幕宽度
private int viewPortWidth;
private int viewPortHeight;
private View topHead;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_empty_list);
this.context = this;
int[] screenSize = getScreenSize(context.getResources());
viewPortWidth = screenSize[0];
viewPortHeight = screenSize[1];
initView();
}
private void initView() {
topHead = findViewById(R.id.topHead);
webView = findViewById(R.id.web_view);
recyclerView = findViewById(R.id.recycler_view);
scrollableLayout = findViewById(R.id.scrollableLayout);
indicator = findViewById(R.id.indicator);
// 这里是测试数据,目前为了看效果设置1,也可以设置0看效果
for (int i = 0; i < 1; i++) {
datas.add("");
}
// 设置点击图片
webView.addJavascriptInterface(new JavaScriptLog(this, new JavaScriptLog.ClickImageCallBack() {
@Override
public void clickImage(String src) {
Toast.makeText(context, "点击:" + src, Toast.LENGTH_SHORT).show();
}
}), "control");
// 设置html内容
webView.setShow(getHtmlData());
// 设置图片加载失败回调
webView.setLoadImgError();
// 添加点击图片脚本事件
webView.setImageClickListener();
adapter = new ListAdapter(datas);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
// 滚动绑定
scrollableLayout.setCurrentScrollableContainer(new HeaderScrollHelper.ScrollableContainer() {
@Override
public View getScrollableView() {
return recyclerView;
}
});
recyclerView.postDelayed(new Runnable() {
@Override
public void run() {
showTopLimitDo();
}
}, 500);
}
clreplaced ListAdapter extends BaseAdapter<String> {
public ListAdapter(List<String> data) {
super(R.layout.default_item, data);
}
@Override
protected void convert(BaseHolder helper, String item) {
ArticlePosreplacedemView main = (ArticlePosreplacedemView) helper.itemView;
main.setIndex(helper.getAdapterPosition());
main.setCallBack(measureCallBack);
helper.setText(R.id.text, "我是item " + helper.getAdapterPosition());
}
}
/**
* 获取屏幕分辨率
*/
public static int[] getScreenSize(Resources resources) {
int width = resources.getDisplayMetrics().widthPixels;
int height = resources.getDisplayMetrics().heightPixels;
int[] result = new int[2];
result[0] = width;
result[1] = height;
return result;
}
/**
* 测量item高度
*/
ArticlePosreplacedemView.ItemMeasureCallBack measureCallBack = new ArticlePosreplacedemView.ItemMeasureCallBack() {
@Override
public void measureItem(int index, int h) {
if (index > 20) {
// 仅记录,这里的20只是测试,可以根据业务进行对应调整
return;
}
itemHeights.put(index, h);
gereplacedemMaxHeight();
}
};
/**
* 测量前20个item的总高度
* @return
*/
public int gereplacedemMaxHeight() {
int max = 0;
for (int i = 0; i < itemHeights.size(); i++) {
Integer itemH = itemHeights.get(i);
if (itemH != null) {
max = itemH + max;
}
}
return max;
}
// 记录列表前20个高度,为了估算列表高度
private SparseArray<Integer> itemHeights = new SparseArray();
private String getHtmlData() {
StringBuffer sb = new StringBuffer();
try {
InputStream is = getreplacedets().open("data.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String temp = "";
while ((temp = br.readLine()) != null) {
sb.append(temp);
}
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (webView != null) {
webView.setWebChromeClient(null);
webView.setWebViewClient(null);
webView.getSettings().setJavaScriptEnabled(false);
webView.clearCache(true);
webView.removeAllViews();
webView.destroy();
webView = null;
}
}
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 估算列表的高度,这里是测量每一个item的高度(测量回调,然后保存)
* @return
*/
private int mearsureRecycleHeight() {
int max = gereplacedemMaxHeight();
return max;
}
/**
* 防止底部空白过得,头部限制滑动距离
*/
private void showTopLimitDo() {
int topHeight = scrollableLayout.getMeasuredHeight();
int th = topHead.getHeight();
// 估算列表是否足够长度
int countHeight = mearsureRecycleHeight();
int topAndButton = dip2px(context, 100);
// 如果头部过少,又没有评论情况(实际头部+估算的内容数据)
if (th + countHeight + topAndButton < viewPortHeight) {
scrollableLayout.setTopOffset(0);
scrollableLayout.setCanScroll(false);
// 禁止滑动
return;
}
// 可以滑动
scrollableLayout.setCanScroll(true);
if (countHeight >= viewPortHeight) {
scrollableLayout.setTopOffset(0);
} else if (countHeight >= topHeight) {
scrollableLayout.setTopOffset(0);
} else {
// 减去其他空间的高度(状态栏+虚拟键盘等),这里就不多做处理,默认10
int otherHeight = dip2px(context, 10);
int tem = viewPortHeight - countHeight - otherHeight;
if (tem < 0)
tem = 0;
// 下面设置一个比例,底部空白比例
scrollableLayout.setTopOffset(tem);
}
}
}